バッチファイルから2つのプログラムを同時に実行し、最初のプログラムの出力を次のようなテキストファイルにリダイレクトします。
start python 1st.py arg1 arg2 > out.txt
start 2nd.exe %1 arg2 arg3
プログラムは期待どおりに実行されますが、すべての出力はstdoutに表示されます。
このようにする必要があるかもしれません:
start cmd /c python 1st.py arg1 arg2 ^> out.txt
リダイレクトはstart
コマンドに適用されますが、実行されるcmd.exe
インスタンスにはなんらかの理由で適用されません。
>
演算子がエスケープされている場合、すべてが機能するはずです。
start 1st.py arg1 arg2 ^> out.txt
(stderrもリダイレクトする場合は、2^>
を使用してください。)
さらに、stderrとstdoutの両方をリダイレクトしたい場合、これは私にとってはうまくいきます
通話の開始delay.bat ^ 1 ^> log.txt ^ 2 ^> ^&^ 1
基本的にすべてのキャラクターをエスケープする必要があるようです。このコマンドは通常、次のようになります。
delay.bat 1> log.txt 2>&1
私にとってのトリックは、コマンドを別のバッチファイルに移動することでした。
rem this first batch file triggers the second one:
start the_second.bat arg1 arg2 out.txt
その後、the_second.batは次のようになります。
python 1st.py %1 %2 > %3