我有一个包含100多个条目的以下格式的文本文件
Header Responses
--- AMD 6001 ---
Sent Packet
FRO 101
A_TEST 5001
Status 0
--- AMD 6002 ---
Sent Packet
FRO 101
A_TEST 5002
Status 1
我的要求是验证'Status'的值是否为0,如果是,继续进行从每个条目中获取随机'A_TEST'值。能否帮助我找到一个有效的方法在每个条目中找到'A_Test'值,因为执行时间因大量条目而更为重要。
我在以下结构中编写了代码
set txtfile = fso.OpenTextFile("")
set content= txtfile.ReadAll
arrEntry = split (content,"--- AMD")
For num=1 to ubound(arrEntry)
'2nd entry fails due to its entry status
If Instr(arrEntry(num),"Status 0") > 0 Then
' How to proceed further to get the value of 'A_TEST' from this array ????
Else
'Fail - Dont Proceed Further
End If
Next
答案 0 :(得分:1)
您的代码失败,因为
set content= txtfile.ReadAll
错误地使用Set
将非对象(String)分配给变量。像
Dim sAll : sAll = goFS.OpenTextFile("..\data\31429305.txt").ReadAll()
Dim s
For Each s In Split(sAll, "--- AMD")
If InStr(s, "Status 0") Then
WScript.Echo Split(s, vbCrLf)(3)
End If
Next
如果幸运的话,将“正常工作”(EOL标记为vbCrLf,A_TEST始终位于第4行)。
我使用RegExp,如:
Dim sAll : sAll = goFS.OpenTextFile("..\data\31429305.txt").ReadAll()
Dim rCut : Set rCut = New RegExp
rCut.Global = True
rCut.Multiline = True
rCut.Pattern = "^A_TEST (\d+)\r$\n^Status 0\r$"
Dim m
For Each m In rCut.Execute(sAll)
WScript.Echo m.Submatches(0)
Next