Fuja do e comercial.
foo=bar ^& baz
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?
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.
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!
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.
Tags command-line windows