web-dev-qa-db-fra.com

Windows CMD Batch, START et redirection de sortie

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

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

Bien que les programmes fonctionnent comme prévu, toutes les sorties sont affichées sur stdout.

30
none

Vous pourriez avoir besoin de le faire de cette façon:

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

La redirection est appliquée à la commande start, mais 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 souhaitez également rediriger stderr, utilisez 2^> pour cela.)

7
grawity

De plus, si vous voulez rediriger stderr et stdout, cela fonctionne pour moi.

lancer l'appel delay.bat ^ 1 ^> log.txt ^ 2 ^> ^ & ^ 1

Il semble que chaque personnage a fondamentalement besoin d'être échappé. Cette commande ressemble normalement à ceci:

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

5
sandos

L'astuce pour moi était de déplacer la commande dans un fichier batch séparé:

rem this first batch file triggers the second one:
start the_second.bat arg1 arg2 out.txt

the_second.bat ressemble alors à ceci:

python 1st.py %1 %2 > %3
4
Florian Straub