VBScript超速入門
はじめに
いまさらながらVBScript(以下VBSと記)についての入門を書いてみる。
なぜ過去の遺産にもなりつつあるVBSについて書くかというと、単純に業務で既存VBSのコードを改修することになったから。なので自分の勉強とノートを兼ねている。
Windowsのシェルをこれから勉強したいならVBSではなくPowerShellをおススメする。
コメント
一行コメントは以下のようにシングルクォートか Rem を使う。
' コメント
Rem これもコメント
VBSには複数行コメントはない!
変数
VBSは動的型付けの言語。なので変数は宣言せずとも使えたりする。
v = 1
ただ、変数宣言の構文も用意されている。
Dim v ' 変数宣言
v = 1
ちなみに宣言と同時に初期化とかやりたくなるけど、これはエラーになるので注意。
Dim v = 1 ` これはエラーになる
定数
定数には Const を使う。
定数は宣言と同時に初期化できる。というか初期値を代入しないといけない。あたりまえだけどそのあと変更することはできない。
Const c = 1
配列
固定長配列
VBSで配列を使うには以下のように宣言。
Dim arr(2)
arr(0) = 0
arr(1) = 1
arr(2) = 2
JavaとかCの配列は、指定する数がそのまま要素数になるのだが、VBSでは指定できる最大インデックスになる。つまり、上記の指定だとインデックスが 0 から 2までの3要素をもった配列になるので注意。かくいう自分も勘違いしてた。。
動的配列
動的配列を使う場合は ReDim を使う。注意点としてReDim を使う対象の配列変数の括弧の中は空にしておくこと。
Dim arr()
ReDim arr(2)
arr(0) = 0
arr(1) = 1
arr(2) = 2
ただ、上記の記述だと再度拡張したときに、もとのデータが消失してしまう。
もとのデータを保持したまま拡張する場合は、拡張時に Preserve を付ける。
Dim arr()
ReDim arr(2)
arr(0) = 0
arr(1) = 1
arr(2) = 2
ReDim Preserve arr(3)
arr(2) = 3
制御文
条件分岐とループっていう制御文について。
条件分岐
VBSの条件分岐は If と Select Caseがある。
If文
まずは if文から。
If a = 1 Then
' 処理1
ElseIf a = 2 Then
' 処理2
Else
' 処理3
End If
Select Case
お次はいわゆるSwitch文。VBSではSelectだけどね。
Select Case a
Case 1
' 処理1
Case 2
' 処理2
Case Else
' 処理3
End Select
他の言語でよくあるswitch文のbreakは必要ない。
繰り返し(ループ)
VBSの繰り返しは大きく分けて For と While がある。
For文
For i = 1 To 3
' 処理
Next
残念ながらVBSには他の言語でいう continue 的なものが存在しない。
While文
While a = 1
' 処理
Wend
関数
VBSにはSubプロシージャとFunctionプロシージャという二種類の関数が存在する。
その違いは戻り値があるかないか。
Subプロシージャ
Subプロシージャは戻り値がない関数。
Sub sampleSub
' 処理
End Sub
Functionプロシージャ
Functionプロシージャは戻り値がある関数。
戻り値の返したかたが、関数名と同名の変数に代入するという独特の返しかたなので注意。
Sub sampleFunc
' 処理
sampleFunc = 1 ' 戻り値
End Sub
クラス
なんとVBSではクラスを扱える。
クラス定義
Class Sample
' フィールドおよびメソッドを定義
End Class
コンストラクタ
VBSのコンストラクタ名は Class_Initialize。
Class Sample
Sub Class_Initialize
' コンストラクタの処理
End Sub
End Class
インスタンスの生成
インスタンスの生成は newキーワードを使うというのは他の言語と一緒。
ただし注意点は インスタンスを格納する変数の前にSet を付けないといけないということ。
Dim a
Set a = new Sample