Doskey para comando composto

29

O Doskey funciona em versões modernas do Windows para configurar aliases para comandos únicos, por ex. doskey foo=bar .

Há um pequeno problema ao tentar usá-lo para comandos compostos como doskey foo=bar & baz , pois isso é interpretado como (doskey foo=bar) & baz . A correção óbvia seria adicionar parênteses explícitos, doskey foo=(bar & baz) , mas, por algum motivo, isso não funciona, e doskey foo="bar & baz" também não funciona.

Existe alguma maneira de fazer isso?

    
por rwallace 18.02.2011 / 17:56

4 respostas

36

Fuja do e comercial.

foo=bar ^& baz
    
por 18.02.2011 / 17:59
17

Use $T para separar comandos:

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

de doskey /? :

$T     Command separator.  Allows multiple commands in a macro.
    
por 18.02.2011 / 18:00
7

Para (um pouco) adicionar a a resposta de Dennis Williamson , você também pode escapar do caractere de pipe para canalizar comandos ! Por exemplo, eu queria um comando que copiasse coisas para a área de transferência. Devido à forma como COPY irá interpretá-lo, você precisa fazer um comando de aparência pateta para que ele copie realmente o texto que você especificar sem que seja seguido por uma nova linha.

Para definir uma macro para copiar para a área de transferência, você pode escapar do pipe com ^ :

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

Após a execução do comando cc hey , você terá agora hey copiado para a área de transferência!

    
por 25.07.2014 / 22:42
7

para adicionar as respostas anteriores, você também pode fazer isso:

mybatfile.cmd

    doskey /macrofile=aliases.txt

aliases.txt

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

observe que no macrofile, não há necessidade de escape de pipe / E comercial e você pode definir vários aliases em uma chamada.

    
por 04.09.2014 / 22:46