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%