VBScript は Microsoft Windows 上で実行できるスクリプト言語です。Windows Script Host (WSH) に基づくスクリプト言語のひとつで、Visual Basic に似た構文を持ちます。WSH には VBScript の他にも JScript があります。この記事では、VBScript の使い方を入門者向けにサンプルを交えてご紹介します。
Windows Script Host (WSH)では、スクリプト・エンジンを利用したスクリプト作成が可能である。スクリプト・エンジンとしてVBScriptと JScript の2種類をサポートしている。
スクリプトはテキストファイルで、VBScriptなら .vbs
、JScriptなら .js
という拡張子を付ける。
エクスプローラからファイルをダブルクリックすることでスクリプトを実行できる。
Windowsコマンド・プロンプトからスクリプトを実行するには、スクリプト・ホストを使用する。スクリプト・ホストにはwscript.exeとcscript.exeの2種類がある。
wscript.exe は、スクリプトをインタラクティブ・モードで実行する。このとき、スクリプトのユーザインタフェースはGUIベースとなり、情報の入力はダイアログ・ボックス、情報の出力はメッセージ・ボックスで行う。
cscript.exe は、スクリプトをバッチ・モードで実行する。このとき、スクリプトのユーザインタフェースはCUIベースとなり、情報の入力は標準入力、情報の出力は標準出力で行う。
プロパティ | 説明 |
---|---|
WScript.Name | WSHの実行ファイル名 |
WScript.Path | WSHの実行ファイルがあるフォルダ・パス |
WScript.FullName | WSHの実行ファイル・パス |
WScript.Version | WSHのバージョン |
WScript.ScriptName | スクリプトのファイル名 |
WScript.ScriptFullName | スクリプトのフルパス |
WScript.Interactive | バッチモード or インタラクティブモード |
WScript.TimeOut | タイムアウトの秒数 |
WScript.Argument | コマンドライン引数の情報 |
WScript.StdIn | 標準入力 |
WScript.StdOut | 標準出力 |
WScript.StdErr | 標準エラー出力 |
メッセージを出力するには、WScript.Echoメソッドを使用する。
WScript.Echo message
引数 message には、出力するメッセージ文字列を指定する。
メッセージを出力するスクリプトのサンプルを次に示す。
WScript.Echo "Hello, world!"
スクリプトをインタラクティブ・モードで動作させた場合、メッセージはメッセージ・ボックスで出力される。スクリプトをバッチ・モードで動作させた場合、メッセージはコンソールの標準出力に出力される。たとえば、次の内容を hello.vbs というファイル名で保存する。
WScript.Echo "Hello, world!"
これをwscript.exeで実行する。
C:\> wscript.exe hello.vbs
そうすると、"Hello, world!" という文字列がメッセージ・ボックスで表示される。
同じスクリプトをcscript.exeで実行すると、"Hello, world!" という文字列がコンソールに表示される。
VBScriptは配列を扱うことができる。VBScriptにおいて、配列の添字(インデックス)は 0 始まりである。
Dim a(2)
a(0) = 1
a(1) = 2
a(2) = 3
For Each i In a
WScript.Echo i
Next
Array関数で配列を定義することもできる。
Dim a
a = Array(1, 2, 3)
For Each i In a
WScript.Echo i
Next
コマンドライン引数を扱うには、WScript.Argumentsオブジェクトを使用する。
コマンドライン引数の個数は、Count()メソッドで参照することができる。また、 n 番目のコマンドライン引数は、WScript.Arguments( n - 1)で参照することができる。
すべてのコマンドライン引数を出力するスクリプトのサンプルを次に示す。
For i = 1 To WScript.Arguments.Count
WScript.Echo WScript.Arguments(i - 1)
Next
指定時間スリープする(指定時間が経過するまで処理を停止する)には、WScript.Sleepメソッドを使用する。
WScript.Sleep milliseconds
引数 milliseconds には、待機する時間をミリ秒単位で指定する。
sleep.vbs
WScript.Sleep WScript.Arguments(0)*1000
実行時には、スリープする秒数をsleep.vbsのコマンドライン引数に指定する。
C:\> cscript.exe sleep.vbs 60
Visual Basicと異なり、VBScriptにはFormat関数が無い。Right関数やFormatNumber関数は存在するので、これらの関数を代用する。
0から99の数値を常に2桁で表示(10未満は先頭に0を付ける)するには、先頭に"0"を付加して、右から2文字を取り出せばよい。VScriptのサンプルコードを次に示す。
Str = Right("0" & number, 2)
number変数の値が12ならば、"012"の末尾2文字("12")を取り出す。number変数の値が3ならば、"03"の末尾2文字("03")を取り出すことになる。
小数点以下2桁を常に表示する例を次に示す。
Str = FormatNumber(number, 2)