VBScript入門

VBScript は Microsoft Windows 上で実行できるスクリプト言語です。Windows Script Host (WSH) に基づくスクリプト言語のひとつで、Visual Basic に似た構文を持ちます。WSH には VBScript の他にも JScript があります。この記事では、VBScript の使い方を入門者向けにサンプルを交えてご紹介します。

Windows Script Host (WSH)

Windows Script Host (WSH)では、スクリプト・エンジンを利用したスクリプト作成が可能である。スクリプト・エンジンとしてVBScriptと JScript の2種類をサポートしている。

スクリプトはテキストファイルで、VBScriptなら .vbs、JScriptなら .js という拡張子を付ける。

エクスプローラからファイルをダブルクリックすることでスクリプトを実行できる。

Windowsコマンド・プロンプトからスクリプトを実行するには、スクリプト・ホストを使用する。スクリプト・ホストにはwscript.exeとcscript.exeの2種類がある。

wscript.exe は、スクリプトをインタラクティブ・モードで実行する。このとき、スクリプトのユーザインタフェースはGUIベースとなり、情報の入力はダイアログ・ボックス、情報の出力はメッセージ・ボックスで行う。

cscript.exe は、スクリプトをバッチ・モードで実行する。このとき、スクリプトのユーザインタフェースはCUIベースとなり、情報の入力は標準入力、情報の出力は標準出力で行う。

WScriptのプロパティ
プロパティ 説明
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!" という文字列がメッセージ・ボックスで表示される。

WScript
Figure 1. WScript

同じスクリプトをcscript.exeで実行すると、"Hello, world!" という文字列がコンソールに表示される。

CScript
Figure 2. CScript

配列

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)