Windows でバッチ処理をしたり、簡単な処理をおこなうツールを作るときに WSH (Windows Script Host) というのをよく使います。
JScript や VBScript で気軽に書けてコンパイルも要らないので地味ながら結構便利なんですよね。
で、この処理の中で外部プログラムの実行をすることが多いのですが、そのときの同期・非同期処理のやり方をよくド忘れするので、簡単にメモ。
環境
- Windows 7
- JScript
参考
比較
待たないほう
var shell = new ActiveXObject('WScript.Shell');
shell.Run('notepad');
WScript.Echo('メモ帳が終了する前にダイアログ表示');
- 待たないし、エラーコードも必ず
0
になる。
待つほう
var shell = new ActiveXObject('WScript.Shell');
shell.Run('notepad', 1, true);
WScript.Echo('メモ帳が終了してからダイアログ表示');
- 2 番目の引数はウィンドウの表示に関するオプションで
1
は標準値。 - 3 番目の引数が
true
のときに終了を待つ。標準値はfalse
。 - エラーコードは、きちんとプログラムの実行結果が返る。