Mookノート

2009-08-24 コマンドウィンドウを表示しないで実行するには

[][][][]コマンドウィンドウを表示しないで実行するには 23:28

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 として保存しておき、これをタスクスケジューラの「実行するファイル名」で指定すればウィンドウを表示せずに実行することができる。

加奈加奈 2011/09/25 21:53 めっ ちゃくちゃ難しそうな内容ですね。
何年も 何年も お仕事でされているMookさん、ほんとうに凄くて尊敬してます。
毎日、お疲れ様です!

トラックバック - http://d.hatena.ne.jp/Mook/20090824/1251124084