Visual Studioを使わずにVBSをデバッグする方法

個人的にはあまり好きじゃないですが、やむなくWindows Serverでサーバ環境を構築する場合、いろんなスクリプトを作らざるを得なくなるのが常というものですが、最大の難点はデバッグがしづらい!という事だと思います。

Visual Studioとか使えばデバッグ出来るんですが、もう少しシンプルなツールだけでデバッグする方法についてまとめてみました。

まずは、テスト用にVBSスクリプト LoopScript.vbsを作成。5秒おきにテキストに1行ログを書いていくだけのシンプルなスクリプトです。

Dim objFso
Dim file
Dim loopCount
Wscript.Echo("ループ処理の開始")
Set objFso = CreateObject("Scripting.FileSystemObject")
Set file = objFso.OpenTextFile("LoopScriptLog.log", 8, True)
loopCount = 0
Do Until loopCount = 120
	file.Writeline(now & " : " & loopCount)
	Wscript.Echo(now & " : ループ" & loopCount & "回目")
	WScript.Sleep(5000)
	loopCount = loopCount + 1
	Stop
Loop
Wscript.Echo("ループ処理の終了")
file.Close()
Wscript.Echo("ファイルのクローズ")

(1) Windows Script Debuggerのインストール

上記のスクリプトをステップ実行する場合や実行中の変数の中身を見たい場合は、Windows Script Debugger が必要になります。まずはMicrosoft公式からダウンロード。

Windows Script Debugger
http://www.microsoft.com/ja-jp/download/details.aspx?id=23992

scd10jp.exeをダウンロードして、「管理者権限で」実行します。

インストールが完了したら再起動を要求されるので、再起動しましょう。

(2) Windows Script Debuggerの起動

インストールが終了していれば、「C:\Program Files\Microsoft Script Debugger」(デフォルトの場合)に「msscrdbg.exe」という実行ファイルが出来ているはずなので、起動しましょう。

(3) VBSスクリプトの実行

VBSを起動する際に、以下のようにオプションを付けて起動します。

C:\Users\Administrator>wscript C:\Users\Administrator\Desktop\LoopScript.vbs //x

すると、Microsoft Script Debugger側の「実行中のドキュメント」に「Windows Script Host」⇒「LoopScript.vbs」が出て来ますので、ダブルクリックすると以下のようにスクリプト内容が表示された状態になります。

EclipseVisual Studioのように、ブレークポイントを指定してステップ実行、みたいな事が出来ます。

(4) 実行中の変数の確認

ウォッチウィンドウみたいな便利機能はないので、実行中の変数が知りたい場合はコマンドウィンドウにて「?変数名」で問い合わせる必要があります。

?loopCount
3

インスタンスに対してもアクセス可能ですが、対象のインスタンスが持っているメソッドやプロパティを指定する必要があります。

?file.Line
376
?objFso.GetFile(WScript.ScriptFullname).DateCreated
2013/12/10 14:13:10

インスタンス指定しただけで配下のプロパティ全部出してくれたりとか、そういう便利機能はないのが残念。