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
環境変数について