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.
Vous pourriez avoir besoin de le faire de cette façon:
start cmd /c python 1st.py arg1 arg2 ^> out.txt
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.)
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
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