STARTコマンドで実行するコンソールアプリケーションの標準出力をファイルに出力
Winコマンドプロンプトにおいて、STARTコマンドで実行するコンソールアプリケーションの標準出力をファイルにリダイレクトする方法。
バッチファイルから直接実行したコマンドの標準出力をファイルに書き出すには、次のようにリダイレクトを使えばいい。
commandname "arg1" >stdout.txt
>stdout.txt commandname "arg1"
1>stdout.txt commandname "arg1"
1>stdout.txt 2>errout.txt commandname "arg1"
しかし、STARTコマンドで実行するプログラムには少し工夫する必要がある。STARTコマンドからはcmd.exeを呼び出しておいて、引数にリダイレクトと実行するコマンドを入れる。
start "Title" /WAIT /BELOWNORMAL /MIN "%SystemRoot%\System32\cmd.exe" /c "1>stdout.txt commandname "arg1""
エラー出力も同じファイルに出力したい場合は次のようにするだけ。
start "Title" /WAIT /BELOWNORMAL /MIN "%SystemRoot%\System32\cmd.exe" /c "1>stdout.txt 2>&1 commandname "arg1""
ところでなぜコマンドをSTARTコマンドを通して実行したかったのかというと、最小化したままスレッドの優先度を下げてプログラムを実行したいため。Powershellならリダイレクトはもっとスマートにできるが、優先度を変えるのはちょっと面倒。