使用 VBS 查询 CSV



有一个这样的csv文件,我可以用下面的代码轻松阅读它。但如您所见,csv 中有多个 name1、组 1、状态 1、名称 2、组 2 等列。每个用户将具有不同数量的列。我想知道是否有办法使用通配符,我调用objRecordset.Fields.Item("Group1")类似 ("Group%") 的东西,或者我是否可以自动增加数字,直到找不到记录

用户名,域,站点,MCO,名称 1,组 1,状态 1,名称 2,组 2,状态

2,名称 3,组 3,状态 3 Paolina,AA,雅典,希腊,Adobe Acrobat Pro,ACROBAT009,Live,,,,,, 乔治,AA,雅典,希腊,SpotFire 2.20,SPOTFIRE220,直播,,,,,,

option explicit
Const adOpenStatic = 3
Const adLockOptimistic = 3
Const adCmdText = &H0001
Dim strPathtoTextFile, objConnection, objRecordSet, objNetwork
Dim wshshell, Username
Set objConnection = CreateObject("ADODB.Connection")
Set objRecordSet = CreateObject("ADODB.Recordset")
Set objNetwork = CreateObject("WScript.Network")
userName = objNetwork.UserName
strPathtoTextFile = "C:Huntervbs" 'must have a trailing 
objConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
          "Data Source=" & strPathtoTextFile & ";" & _
          "Extended Properties=""text;HDR=YES;FMT=Delimited"""
objRecordset.Open "SELECT * FROM Users.txt where [user name] like '" & UserName & "'", _
          objConnection, adOpenStatic, adLockOptimistic, adCmdText
Do Until objRecordset.EOF
    Wscript.Echo "Name: " & objRecordset.Fields.Item("User Name")
    Wscript.Echo "Group: " & objRecordset.Fields.Item("Group1")
    Wscript.echo "Status:" & objRecordset.Fields.Item("Status1")
    objRecordSet.MoveNext
Loop

您的示例表明最大组数是最后一个字段,因此可能:

objRecordset.Open "SELECT * FROM Users.txt where [user name] like '" _
      & UserName & "'", _
      objConnection, adOpenStatic, adLockOptimistic, adCmdText
MaxNum = _
      Replace(objRecordset.Fields(objRecordset.Fields.Count-1).Name,"Status","")
Do Until objRecordset.EOF
    Wscript.Echo "Name: " & objRecordset.Fields.Item("User Name")
    For i=1 to MaxNum
       Wscript.Echo "Group: " & objRecordset.Fields.Item("Group" & i)
       Wscript.echo "Status:" & objRecordset.Fields.Item("Status" & i)
    Next
    objRecordSet.MoveNext
Loop

我没有测试过,但总体思路应该成立。

最新更新