VBS获取Ini配置文件一个节点下的所有字段的值

时间:2022-01-31 15:41:49

'
'* 功能:使用VBS读取ini文件中指定节点下的所有值
'* 输入参数:inipath :ini文件的地址
'*           initypes :ini文件中包含在"["和"]"之间的值
'* 返回值:找到的字段的值组成的array
'* 编写人:  chenyb
'* 编写日期:2008-12-26
'* 其他说明:以下只是方法,具体问题具体修改
'
Function vbsGetIniFields(inipath,initypes)
 Const ForReading = 1 '定义常量
 'FSO对象,文本对象,下一行数据变量,字串搜索位置
 Dim objFSO,objTextFile,strNextLine,intLineFinder
 Dim state  '指定是否在匹配的initypes中是否找到字段
 Dim tmp    '临时存储字符串
 Dim typeList '分割字符串后的字串list
 Dim rsStr    '函数返回值
 Set objFSO = CreateObject("Scripting.FileSystemObject") '建立FSO对象
 Set objTextFile = objFSO.OpenTextFile(inipath, ForReading)'打开文档
 Do Until objTextFile.AtEndOfStream   '遍历每一行
  strNextLine = objTextFile.ReadLine '读取一行数据
  '如果已经找到了initypes,又找到了"[]",那说明字段未找到
  If InStr(strNextLine, "[") <> 0 And InStr(strNextLine, "]") <> 0 Then
      If state = 1 Then
          Exit DO
      End if
      tmp = Trim(Mid(Trim(strNextLine),InStr(strNextLine, "[")+1,Len(initypes)))    
      if tmp = Trim(initypes) Then '找到了initypes  
          state = 1
          strNextLine = objTextFile.ReadLine
      End if
  End if
  
  If state = 1 Then  
   intLineFinder = InStr(strNextLine,"=") '搜索字符串中的"="
   If intLineFinder <> 0 Then '如果找到"="
       typeList = Split(strNextLine,"=") '分割字符串
       rsStr =rsStr & ",""" & typeList(1) & """" '赋值 
   End If
  End if
 Loop 
 objTextFile.Close '关闭文档
 Execute "vbsGetIniFields = Array(" & right(rsStr,Len(rsStr) - 1) & ")" '返回值
End Function
'***********使用示例******************************
Dim t
t = vbsGetIniFields("公诉.ini","包括VBS")
MsgBox UBound(t)
MsgBox t(0)
MsgBox t(1)
'*************************************************