Doskey para comando compuesto

32

Doskey funciona en versiones modernas de Windows para configurar alias para comandos individuales, por ejemplo doskey foo=bar.

Hay un pequeño problema al intentar usarlo para comandos compuestos, doskey foo=bar & bazya que esto se interpreta como (doskey foo=bar) & baz. La solución obvia sería agregar paréntesis explícitos, doskey foo=(bar & baz)pero por alguna razón esto no funciona, y doskey foo="bar & baz"tampoco funciona.

¿Hay alguna forma de hacer esto?

rwallace
fuente

Respuestas:

39

Escapar del ampersand.

foo=bar ^& baz
Pausado hasta nuevo aviso.
fuente
19

Use $Tpara separar comandos:

doskey foo = bar $ T baz
doskey cpdel = copia $ 1 $ 2 $ T del $ 1

de doskey /?:

$ T Separador de comandos. Permite múltiples comandos en una macro.
John T
fuente
7

Para agregar (algo) a la respuesta de Dennis Williamson , también puede escapar del carácter de canalización para canalizar comandos. Por ejemplo, quería un comando que copiara cosas al portapapeles. Debido a la forma en que COPYlo interpretará, debe hacer un comando tonto para que realmente copie el texto que especifique sin que sea seguido por una nueva línea.

Para definir una macro para copiar en el portapapeles, puede escapar de la tubería con ^:

doskey cc=echo^|set /p=$*^|clip

Al ejecutar el comando cc hey, ¡ahora habrá heycopiado al portapapeles!

CoolOppo
fuente
¡También me preguntaba cómo evitar la copia del personaje de nueva línea! Gracias.
Alex Vallejo
7

para agregar a las respuestas anteriores, también puede hacer esto:

mybatfile.cmd

    doskey /macrofile=aliases.txt

aliases.txt

    foo = bar y baz
    cpdel = copia $ 1 $ 2 $ T del $ 1
    cc = echo | set / p = $ * | clip

tenga en cuenta que en el macrofile, no hay necesidad de escapar de pipe / ampersand y puede definir múltiples alias en una llamada.

espíritu espiritual
fuente