Ao trabalhar com o Bash, posso colocar a saída de um comando em outro comando assim:
my_command `echo Test`
seria a mesma coisa que
my_command Test
(Obviamente, este é apenas um exemplo não prático.)
Só estou me perguntando se você pode fazer a mesma coisa no Batch.
bash
batch-file
backticks
MiffTheFox
fonte
fonte
Respostas:
Você pode fazer isso redirecionando a saída para um arquivo primeiro. Por exemplo:
fonte
for /f
variante é muito melhor.%random%
Você pode obter uma funcionalidade semelhante usando scripts cmd.exe com o
for /f
comando:Sim, é meio não óbvio (para dizer o mínimo), mas é o que está lá.
Veja
for /?
os detalhes sangrentos.Nota lateral: Eu pensei que para usar "
echo
" dentro dos crases em umfor /f
comando " " precisaria ser feito usando "cmd.exe /c echo Test
" já queecho
é um comando interno paracmd.exe
, mas funciona de forma mais natural. Os scripts de lote do Windows sempre me surpreendem de alguma forma (mas geralmente não de um jeito bom).fonte
system()
Ou seja, C's estava bem, iirc, já que ele inicia um shell em qualquer caso, mas o .NETProcess.Start
precisa invocar explicitamente o shell. Algo assim, iirc. Em todo caso, considero que esta é a melhor resposta do que a aceita :-)for
não machucar, mas confundir o problema. E sobre isso:for /f %%a in ('"echo Test"') do my_command %%a
tokens=*
é importante. Caso contrário, se o resultado do comando incluir espaços, apenas a primeira palavra será gerada. Executar este no prompt:for /f %a in ('"echo foo bar"') do echo "%a"
. Vai ser impresso"foo"
.Leia a documentação do comando "for":
for /?
Infelizmente, não estou conectado ao Windows para verificar, mas acho que algo assim pode se aproximar do que você deseja:
fonte
Você sempre pode executar o Bash dentro do Windows. Eu faço isso o tempo todo com o MSYS (muito mais eficiente do que o Cygwin ).
fonte
Talvez eu esteja bagunçando a sintaxe do
for /f
método padrão , mas quando coloco um comando muito complexo envolvendo && e | dentro das crostas no limite dofor /f
, causa problemas. Uma pequena modificação do usual é possível para lidar com um comando de complexidade arbitrária:Colocando primeiro seu comando completo e complexo em uma variável e, em seguida, colocando uma referência à variável no limite em vez de colocar o comando complexo diretamente no limite do loop for, você pode evitar problemas de interpretação de sintaxe. Atualmente, se eu copiar o comando exato que defini para a
VV
variável no exemplo acima onde ele é usado%VV%
, isso causará erros de sintaxe.fonte