
[VBS]VBscriptからINIの内容を取得する
VBscriptでINIの内容を取得するものを探している人は参考にしてください。
下記は、INIファイルからVBscriptでセクション「test1」のパラメータ「data1」と、セクション「test2」のパラメータ「data3」の内容を取得し、表示するプログラムです。
■INIファイルの内容(iniget.ini)
[test1] data1=1111 data2=2222 [test2] data3=3333 data4=4444
■実行結果
c:\cscript iniget.vbs test1のdata2:2222 test2のdata3:3333
■VBscriptのソース(iniget.vbs)
' iniファイル名 Const conIniFileName = "c:\vbs\iniget\iniget.ini" ' ファイル入出力の定数 Const conForReading = 1, conForWriting = 2, conForAppending = 8 Set objFSO = CreateObject("Scripting.FileSystemObject") ' ファイルのOPEN Set objIniFile = objFSO.OpenTextFile(conIniFileName, conForReading, False) If Err.Number <> 0 Then ' エラーメッセージを出力 wscript.echo "INIファイル名:" & conIniFileName wscript.quit(1) End If ' 格納先Dictionaryオブジェクトの作成 Set objSectionDic = CreateObject("Scripting.Dictionary") ' ファイルのREAD strReadLine = objIniFile.ReadLine Do While objIniFile.AtEndofStream = False ' ステートメント開始行を検索 If (strReadLine <> " ") And (StrComp("[]", (Left(strReadLine, 1) & Right(strReadLine, 1))) = 0) Then ' セクション名を取得 strSection = Mid(strReadLine, 2, (Len(strReadLine) - 2)) ' キー用Dictionaryオブジェクト作成 Set objKeyDic = CreateObject("Scripting.Dictionary") ' ファイルの最終行になるまでLoop Do While objIniFile.AtEndofStream = False strReadLine = objIniFile.ReadLine If (strReadLine <> "") And (StrComp(";", Left(strReadLine, 1)) <> 0) Then ' 次のステートメント開始行が出現したら、Loop終了 If StrComp("[]", (Left(strReadLine, 1) & Right(strReadLine, 1))) = 0 Then Exit Do End If ' 1セクション内の定義をDictionaryオブジェクトに格納する arrReadLine = Split(strReadLine, "=", 2, vbTextCompare) objKeyDic.Add UCase(arrReadLine(0)), arrReadLine(1) End If Loop ' オブジェクトに格納する objSectionDic.Add UCase(strSection), objKeyDic Else strReadLine = objIniFile.ReadLine End If Loop ' ファイルのCLOSE objIniFile.Close '配列からデータを取得し、表示する wscript.echo "test1のdata2:" & funcIniFileGetString(objSectionDic, "test1", "data2") wscript.echo "test2のdata3:" & funcIniFileGetString(objSectionDic, "test2", "data3") '**************************************************************** 'iniの内容を配列から取得 '第1引数:配列名 '第2引数:セクション '第3引数:パラメータ '**************************************************************** Function funcIniFileGetString(objDictionary, strSection, strKey) Dim objTempdic strSection = UCase(strSection) strKey = UCase(strKey) If objDictionary.Exists(strSection) Then Set objTempdic = objDictionary.Item(strSection) If objTempdic.Exists(strKey) Then funcIniFileGetString = objDictionary(strSection)(strKey) Exit Function End If End If funcIniFileGetString = "" End Function