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ならリダイレクトはもっとスマートにできるが、優先度を変えるのはちょっと面倒。


comments powered by Disqus

※コメント欄が表示されない場合はdisqusについてJavascriptが有効であることを確認して下さい.

(C) 2008-2017 akm. This blog theme is based on sakmug. Hosted by Xdomain