VBScriptを書く機会があったので、そのときに調べたTipsメモ。
配列操作
サイズ取得、push、pop、shift、unshiftを行なう関数を書きました。
関数に渡す変数は可変配列として宣言する必要があります。クラスで書いたほうがいいですね。
' サイズ取得
Function arraySize(array)
Dim n
arraySize = UBound(array) - LBound(array) + 1
End Function
Sub pushArray(array, f)
Dim size
ReDim Preserve array(UBound(array)+1)
array(UBound(array)) = f
End Sub
Function popArray(array)
Dim f
f = array(UBound(array))
ReDim Preserve array(UBound(array) - 1)
popArray = f
End Function
Function shiftArray(array)
Dim p
p = array(0)
Dim i
For i = 1 To UBound(array) Step 1
array(i-1) = array(i)
Next
ReDim Preserve array(UBound(array) - 1)
shiftArray = p
End Function
Sub unShiftArray(array, f)
ReDim Preserve array(UBound(array) + 1)
Dim i
For i = 0 To UBound(array)-1 Step 1
array(i+1) = array(i)
Next
array(0) = f
End Sub
ファイル書き込み
ファイルハンドルを得て、一行ずつ書き込む。
Dim FSO
Set FSO = CreateObject("Scripting.FileSystemObject")
Dim logFile
Set logFile = FSO.OpenTextFile("log.txt", 2 , True)
logFile.WriteLine("error!!")
logFile.Close
Set logFile = Nothing
Set FSO = Nothing
ファイル読み込み
ファイルハンドルを得て、ファイルの最後まで一行ずつ読み込む。
Dim FSO
Set FSO = CreateObject("Scripting.FileSystemObject")
Dim ReadStream = FSO.OpenTextFile("read.txt", 1, False)
Dim line
Do While ReadStream.AtEndOfStream <> Then
line = ReadStream.ReadLine
WScript.Echo line
Loop
ReadStream.Close
Set ReadStream = Nothing
Set FSO = Nothing
ディレクトリ一覧を取得
Dim FSO
Set FSO = CreateObject("Scripting.FileSystemObject")
Dim folder
folder = FSO.GetFolder("C:\")
For Each SubFolder In folder.SubFolders
WScript SubFolder.Name
WScript SubFolder.Path
Next
Set FSO = Nothing
正規表現の後方参照
Dim filename filename = "test.txt" Dim regEx Set regEx = New RegExp regEx.Patter = "\.(.*)?" regEx.Global = True regEx.IgnoreCase = True Dim oMatch, oMatches, ext Set oMatches = regEx.Execute(filename) ' 最初に一致したもの Set oMatch = oMatches(0) ' $1 ext = oMatch.SubMatches(0) Set regEx = Nothing Set oMatch = Nothing Set oMatches = Nothing
環境変数参照
Dim objWshShell
Set objWshShell = WScript.CreateObject("WScript.Shell")
WScript.Echo objWshShell.ExpandEnvironmentStrings("%ProgramFiles%")
Set objWshShell = Nothing
環境変数について