Windows CMD Lote, START e redirecionamento de saída

25

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.

    
por none 21.09.2011 / 19:06

4 respostas

25

Você pode precisar fazer desta forma:

start cmd /c python 1st.py arg1 arg2 ^> out.txt
    
por 21.09.2011 / 19:30
6

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.)

    
por 21.09.2011 / 19:27
4

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

    
por 16.04.2015 / 10:14
3

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
    
por 26.07.2016 / 16:30