Doskey para comando composto

32

O Doskey trabalha em versões modernas do Windows para definir aliases para comandos únicos, por exemplo doskey foo=bar.

Há um pequeno problema ao tentar usá-lo para comandos compostos, como doskey foo=bar & bazisso é 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?

rwallace
fonte

Respostas:

39

Fuja do e comercial.

foo=bar ^& baz
Pausado até novo aviso.
fonte
19

Use $Tpara separar comandos:

doskey foo = bar $ T baz
doskey cpdel = cópia $ 1 $ 2 $ T del $ 1

de doskey /?:

Separador de comandos $ T. Permite vários comandos em uma macro.
John T
fonte
7

Para adicionar um pouco à 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 à maneira COPYcomo a interpretará, você precisa executar um comando de aparência pateta para realmente copiar o texto especificado 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á heycopiado para a área de transferência!

CoolOppo
fonte
Eu também queria saber como impedir a cópia do caractere de nova linha! Obrigado.
Alex Vallejo
7

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

mybatfile.cmd

    doskey /macrofile=aliases.txt

aliases.txt

    foo = bar & baz
    cpdel = copiar $ 1 $ 2 $ T del $ 1
    cc = eco | set / p = $ * | clipe

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

spiritpyre
fonte