web-dev-qa-db-ja.com

Windows CMDバッチ、STARTおよび出力リダイレクト

バッチファイルから2つのプログラムを同時に実行し、最初のプログラムの出力を次のようなテキストファイルにリダイレクトします。

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

プログラムは期待どおりに実行されますが、すべての出力はstdoutに表示されます。

34
none

このようにする必要があるかもしれません:

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

リダイレクトはstartコマンドに適用されますが、実行されるcmd.exeインスタンスにはなんらかの理由で適用されません。

>演算子がエスケープされている場合、すべてが機能するはずです。

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

(stderrもリダイレクトする場合は、2^>を使用してください。)

7
user1686

さらに、stderrとstdoutの両方をリダイレクトしたい場合、これは私にとってはうまくいきます

通話の開始delay.bat ^ 1 ^> log.txt ^ 2 ^> ^&^ 1

基本的にすべてのキャラクターをエスケープする必要があるようです。このコマンドは通常、次のようになります。

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

5
sandos

私にとってのトリックは、コマンドを別のバッチファイルに移動することでした。

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
5
Florian Straub