Exemplo de saída de eco de dir
(use aspas simples, não backtick!):
echo off & for /f "delims=" %A in('dir') do echo %A
No modo interativo, você precisa digitar echo on
e pressionar Enter para sair. Se você tiver certeza de que o loop só é executado uma vez (ou seja, a saída de ('xxx')
é linha única), você pode direcionar o echo on
no comando.
echo off & for /f "delims=" %A in('set /a 0x3DE1') do net helpmsg %A & echo on
Por motivo desconhecido, ('set /a 0x3DE1')
não pode fazer como 'set /a c=0x3DE1'
, mesmo que set /a c=0x3DE1
funcione como um único comando.
Exemplo de echo hello world
de 'echo hello world'
(aspas simples):
echo off & for /f "delims=" %A in('echo hello world') do echo %A
Exemplo de echo hello world
de ""
(string literal):
echo off & for /f "delims=" %A in("hello world") do echo %A
Acima da sintaxe %A
é para o modo interativo, você precisa de duplo %
no arquivo de lote, por exemplo %%A
Tome cuidado se você fizer echo %A
dentro do loop, imagine se uma das linhas da saída do comando chamar on
, então existem 2 problemas:
[1] echo $A
significa echo on
que não ecoará em nada e será invisível. Só posso pensar em comparar o on
para lidar com esse caso específico.
[2] echo $A
significa echo on
, que retornará a saída do prompt de comando; Você pode precisar adicionar echo off
extra dentro do loop, por exemplo:
echo off & for /f "delims=" %A in('dir /b') do echo %A & echo off
Observe que os exemplos acima estão longe de serem equivalentes a ''
, já que o argumento é executado linha por linha. Você pode criar este lote para tentar simular echo 'ls'
(faça um loop e anexe todas as linhas em uma única variável separada por espaço e depois passe como argumento mais tarde):
@echo off
Setlocal EnableDelayedExpansion
set fls=
for /f "delims=" %%A in ('dir /b') do set fls=!fls! %%A
echo %fls%