我有有成千上萬的每行的幾個文本文件與此是一個典型的線的一個實例的後續文本:返回行號或文本文件字符串搜索
PCI\VEN_10EC&DEV_8168&REV_09 Realtek\5x64\FORCED\PCIe_5.810.1218.2012\ Netrtle.inf Realtek 1 12/18/2012,5.810.1218.2012 Realtek PCIe GBE Family Controller
腳本我的工作對確實爲文本,它的第一段的字符串搜索:
PCI\VEN_10EC&DEV_8168&REV_09
我的腳本縮小了哪些文件具有此字符串,但我真正需要的是它,然後返回在同一條線上的下一個字符串:
Realtek\5x64\FORCED\PCIe_5.810.1218.2012\
一旦我有了這個字符串,我就可以繼續使用只從7zip中提取Realtek文件夾的腳本的其餘部分。
我已經看到這與Stack的其他語言完成,但我找不到任何VBS。如果我知道如何更好地說明任務,我可能會找到答案。我真的很感激一些建議抓住第二個字符串。
對於背景,這是我正在處理的腳本。它看起來在所有的文本文件在C:\腳本\通過WMI查詢代碼爲28返回CompatibleID設備驅動程序的字符串(未安裝驅動程序):
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objShell = CreateObject("Wscript.Shell")
Set objNet = CreateObject("WScript.Network")
Set objWMIService = GetObject("winmgmts:\\" & "." & "\root\CIMV2")
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_PnPEntity " _
& "WHERE ConfigManagerErrorCode = 28")
For Each objItem in colItems
Dim arrCompatibleIDs
aarCompatibleIDs = objItem.CompatibleID
for each objComp in aarCompatibleIDs
Dim FirstID
FirstID = objComp
Exit For
Next
Next
strSearchFor = firstID
objStartFolder = "C:\scripts"
Set objFolder = objFSO.GetFolder(objStartFolder)
Set colFiles = objFolder.Files
For Each objFile in colFiles
'Wscript.Echo objFile.Name
strFile = "C:\scripts\" & objFile.Name
set objFile = objFSO.getFile(strFile)
if objFile.size > 0 then
If InStr(objFSO.OpenTextFile(strFile).ReadAll, strSearchFor) > 0 Then
msgbox(objfile.name)
Else
WScript.Sleep (100)
End If
End If
Next