42 votes

Windows CMD Lot, DÉMARRER et redirection de sortie

Je voudrais exécuter deux programmes simultanément à partir d'un fichier batch, et rediriger la sortie du premier programme dans un fichier texte comme suit :

start python 1st.py arg1 arg2 > out.txt
start 2nd.exe %1 arg2 arg3

Alors que les programmes s'exécutent comme prévu, toute la sortie est affichée sur stdout.

47voto

Patrick Seymour Points 8162

Vous pourriez avoir besoin de le faire de cette manière :

start cmd /c python 1st.py arg1 arg2 ^> out.txt

8voto

James Mertz Points 390

La redirection est appliquée à la commande start, mais d'une manière ou d'une autre, pas à l'instance cmd.exe qu'elle exécute.

Si l'opérateur > est échappé, tout devrait fonctionner :

start 1st.py arg1 arg2 ^> out.txt

(Si vous voulez rediriger également stderr, utilisez 2^> pour cela.)

8voto

gnlogic Points 640

De plus, si vous voulez rediriger à la fois stderr et stdout, cela fonctionne pour moi

démarrer l'appel à delay.bat ^1^> log.txt ^2^>^&^1

Il semble que chaque caractère doit être échappé. Cette commande ressemble normalement à ceci :

delay.bat 1> log.txt 2>&1

7voto

Florian Straub Points 203

La solution qui a fonctionné pour moi a été de déplacer la commande dans un fichier batch séparé :

rem ce premier fichier batch déclenche le second :
start the_second.bat arg1 arg2 out.txt

the_second.bat ressemble alors à ceci :

python 1st.py %1 %2 > %3

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X