WScriptオブジェクトには、スクリプトの実行を強制的に終了させるQuitメソッドと、実行を一定時間停止させるSleepメソッドが用意されている。
このうちSleepメソッドは、ミリ秒単位で待ち時間を指定する。次の例では、1秒おきに「1」「2」「3」と表示され、次にWScript.Quitメソッドで実行が強制終了される。「4」「5」は表示されない。なおVBScriptでは、スクリプト中のアポストロフィ(')から行末まではコメントであり、実際の動作には影響しない。
1:' 1000ミリ秒間一時停止して1を表示
2:WScript.Sleep(1000)
3:WScript.Echo "1"
4:
5:' 1000ミリ秒間一時停止して2を表示
6:WScript.Sleep(1000)
7:WScript.Echo "2"
8:
9:' 1000ミリ秒間一時停止して3を表示
10:WScript.Sleep(1000)
11:WScript.Echo "3"
12:
13:' 処理を終了
14:WScript.Quit
15:
16:' 以下は実行されない
17:WScript.Echo "4"
18:WScript.Echo "5"
スクリプトの実行時パラメータを指定することで、タイムアウト時間やバッチ・モードを指定できることは第2回で解説したが、スクリプト中からも、TimeOutプロパティとInteractiveプロパティを設定することでこれらの設定を変更できる。次の例では、「2」はバッチ・モードのため表示されない。また、4秒でタイムアウトするため「5」は表示されず、「実行時間が制限時間を超えました」というメッセージが表示される。
1:Wscript.Timeout = 4 '4秒でタイムアウトするように設定
2:
3:' 1000ミリ秒間一時停止して1を表示
4:WScript.Sleep(1000)
5:WScript.Echo "1"
6:
7:WScript.Sleep(1000) ' 1000ミリ秒間一時停止
8:
9:WScript.Interactive = False ' バッチ・モードに設定
10:WScript.Echo "2" ' バッチ・モードなので表示されない
11:WScript.Interactive = True ' インタクティブ・モードに設定
12:WScript.Sleep(1000)
13:WScript.Echo "3" ' インタラクティブ・モードなので表示される
14:WScript.Sleep(2000)
15:
16:'ここまでで5秒間スリープしているので、タイムアウトで以下は実行されない
17:WScript.Echo "5"
WScriptオブジェクトのプロパティを使って、現在実行中のスクリプト・ファイルの名称やスクリプト・ホストの情報を取得することができる。
次の例では、スクリプト・ホストのバージョンとファイル名を取得して、条件に合うかどうか判定している。
1:If WScript.Version <> "5.6" Then
2: WScript.Echo " WSH 5.6で実行してください。"
3: WScript.Quit
4:End If
5:
6:If UCase(Right(WScript.FullName, 11)) = "WSCRIPT.EXE" Then
7: WScript.Echo " CScriptで実行してください。"
8: WScript.Quit
10:End If
11:
12:WScript.Echo "OK."
前半(1行目〜4行目)では、Versionプロパティを確認して、値が5.6でなければメッセージを表示して終了している。これで古いWSHランタイムでの実行を禁止できる。
後半(6行目〜10行目)では、WSHのスクリプト・ホスト・ファイルの名前を確認し、wscript.exeであれば(GUIモードで実行された場合は)同じくメッセージを表示して終了する。
FullNameプロパティでは、スクリプト・ホストのファイル名が「C:\WINDOWS\system32\cscript.exe」のようなフルパスで返ってくる。このパスは環境によって変わるので、パス部分を削除するためにVBScriptのRight関数を使って右側11文字を取り出し、さらにUCase関数で小文字を大文字に揃えてWSCRIPT.EXEと比較している。
ホストの情報を取得するプロパティには、これ以外にも次のようなものがある。
プロパティ | 取得できる値 | 値の例 |
---|---|---|
BuildVersion | WSHのビルド・バージョン番号 | 6626 |
FullName | ホストの実行ファイル(CScript.exeやWScript.exe)の絶対パス | C:\WINDOWS\system32\cscript.exe |
Name | スクリプト・ホストの名前。常に“Windows Script Host”を返す | Windows Script Host |
Path | ホストの実行ファイルのあるフォルダのパス | C:\WINDOWS\system32 |
ScriptFullName | 実行中のスクリプトの絶対パス | D:\WSH\test.vbs |
ScriptName | 実行中のスクリプトのファイル名 | test.vbs |
Version | WSHのバージョン番号 | 5.6 |
ホスト情報を取得するWScriptオブジェクトのプロパティ |
著者の環境では、WSHのフル・バージョンは5.6.6626であり、Versionプロパティで前半部分の5.6が、BuildVersionで後半部分の6626が取得できる。
前回紹介した表では、便宜上Applicationプロパティもホスト情報取得の欄に書いたが、ApplicationプロパティはWScriptオブジェクトそのものを返すプロパティであり、使う機会はないと思われるので説明は省略する。
今回はWScriptオブジェクトのうち、実行時パラメータ、スクリプトの実行制御、ホスト情報の取得に関するメソッドとプロパティについて解説した。このほかにもWScriptオブジェクトには、あるWSHコンポーネントで発生したイベントを別のコンポーネントで処理するためのイベント制御機能がある。しかし単純だが面倒な管理作業をごく短いスクリプトで簡易に実行するという本稿の主旨では使う機会はないと思われるので説明は省略した。
以上でWScriptオブジェクトの説明は終わりである。次回は、WSHスクリプトからエクスプローラなどのWindowsシェルを制御するためのWshShellオブジェクトについて説明する予定だ。
Copyright© Digital Advantage Corp. All Rights Reserved.