2009-08-24 コマンドウィンドウを表示しないで実行するには
■[気になる質問][ プログラミング][ DOS][ WSH]コマンドウィンドウを表示しないで実行するには
Q1 Windowsのバッチプログラム(.bat)を実行する際、ウィンドウを表示しない方法をお教えください。
やはり質問トピックの最初としてはこれを挙げよう。
これは当時、WSHを習得し始めた頃にたまたま見かけた質問に答えたものであるが、これが私のはてな初回答であった。
回答補足
A1 WSH の Runメソッドの利用
バッチを実行すると、実行中黒いウィンドウ(DOSのコマンドウィンドウ)が表示されるが、タスクスケジューラで実行する際など、これを表示したくないことはよくある。
現在でもこのような場面に出会ったとき、手軽な実現方法としてこの方法をとる。
WSHのシェルでRun メソッドにあるように、このメソッドは第二引数として実行ウィンドウの外観を指定できる。
object.Run(strCommand, [intWindowStyle], [bWaitOnReturn])
引数
object
WshShell オブジェクトです。
strCommand
実行するコマンド ラインを示す文字列値です。この引数には、実行可能ファイルに渡すべきパラメータをすべて含める必要があります。
intWindowStyle
省略可能です。プログラムのウィンドウの外観を示す整数値です。すべてのプログラムがこの情報を使用するわけではないので注意してください。
bWaitOnReturn
省略可能です。スクリプト内の次のステートメントに進まずにプログラムの実行が終了するまでスクリプトを待機させるかどうかを示すブール値です。bWaitOnReturn に TRUE を指定すると、プログラムの実行が終了するまでスクリプトの実行は中断され、Run メソッドはアプリケーションから返される任意のエラーコードを返します。bWaitOnReturn に FALSE を指定すると、プログラムが開始すると Run メソッドは即座に復帰して自動的に 0 を返します (これをエラー コードとして解釈しないでください)。
この外観として「非表示にする(0)」を指定することによって、ウィンドウを表示しないでバッチを実行できる。
例えば stealth.bat を非表示にして実行したい場合、下記のスクリプトを使用する。
CreateObject("WScropt.Shell").Run "C:\stealth.bat",0
例えばタスクスケジューラでバッチを呼び出す場合、上記の一行を書いたファイルを CallBat.vbs として保存しておき、これをタスクスケジューラの「実行するファイル名」で指定すればウィンドウを表示せずに実行することができる。


何年も 何年も お仕事でされているMookさん、ほんとうに凄くて尊敬してます。
毎日、お疲れ様です!