Você pode precisar fazer desta forma:
start cmd /c python 1st.py arg1 arg2 ^> out.txt
Eu gostaria de executar dois programas simultaneamente a partir de um arquivo em lote e redirecionar a saída do primeiro programa para um arquivo de texto como:
start python 1st.py arg1 arg2 > out.txt
start 2nd.exe %1 arg2 arg3
Enquanto os programas são executados como esperado, toda a saída é mostrada no stdout.
O redirecionamento é aplicado ao comando start
, mas de alguma forma não é para a instância cmd.exe
que ele executa.
Se o operador >
tiver escapado, tudo deverá funcionar:
start 1st.py arg1 arg2 ^> out.txt
(Se você quiser redirecionar o stderr também, use 2^>
para ele.)
Além disso, se você quiser redirecionar stderr e stdout, isso funciona para mim
start call delay.bat ^1^> log.txt ^2^>^&^1
Parece que basicamente todos os personagens precisam escapar. Este comando normalmente se parece com isto:
delay.bat 1> log.txt 2>&1
Qual foi o truque para mim em mover o comando para um arquivo em lote separado:
rem this first batch file triggers the second one:
start the_second.bat arg1 arg2 out.txt
the_second.bat então se parece com isto:
python 1st.py %1 %2 > %3
Tags command-line batch redirection