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


※コメント欄が表示されない場合はdisqusについてJavascriptが有効であることを確認して下さい。コメントはスパム防止フィルターによる承認制のため、投稿してもすぐに反映されない場合があります。

管理人 : Akamaki (akm)

は、PCとVTuberに夢中になっている電気技術者です。

私はレトロコンピューティングの愛好家ですが、そのようなリグはもう収集していません。

私の活動はトップページで見ることができます。読んでくれてありがとう!