2017-03-24 111 views
0

我有一個包含日誌數據的文本文件。我從日誌文件中檢索序列號,輸出狀態,引腳號等。使用VBScript從特定字符串讀取文本文件中的行

我的日誌文件如下所示。它有很多內容。

"FORMAT=U2" 
"BEGIN HEADER" 
"TS=600581" 
"ST=1001038" 
"TC=60055" 
"PIN=100577" 
"SN=GXT220.1" 

我必須讀取文件,打印PIN是100577,序列號是GXT220.1。我對may文件做了同樣的處理,並且所有文件的第no行都不相同。

回答

0

不知道這是你想要的--->閱讀thro呃文本文件,並提取具有固定指標的行中的特定信息。

如果是這樣,這是我會做的。

Option Explicit 

Dim FSO, ReadTextFile ' object 
Dim Textline ' string/variant 
Dim PinNumber, Serial ' Output 

FSO = CreateObject("Scripting.FileSystemObject") 

Set ReadTextFile = FSO.OpenTextFile("File.txt", 1) ' Open text with read only mode 

Do Until ReadTextFile.AtEndOfStream 
    Textline = ReadTextFile.Readline() 

    If Instr(Textline, "PIN=") Then ' If textline contain string "PIN=" 
     PinNumber = Split(Textline, "=")(1) ' Split the textline with "=" indicator 
    End If 

    If Instr(Textline, "SN=") Then 
     Serial = Split(Textline, "=")(1) 
    End If 

Loop ' Read through every line 

本示例僅適用於在一個文件中只有一個指示器的情況。而且您的指標與所有txt文件相同。希望它有幫助:)

+0

如果你需要做更多的文件,只是簡單地做一個循環。 「設置FSOFolder = FSO.GetFolder( 「文件夾名\」) 對於每個OBJFILE在FSOFolder.Files '在文件夾中設置 = ReadTextFile FSO.OpenTextFile(Objfile.path,1) 下一步' 遍歷所有文件 –

0

使用

  1. ReadAll()讀取一個文件到一個字符串
  2. 一個RegExp到分析字符串
  3. 一個Dictionary來存儲/訪問值

如:

Option Explicit 

Dim goFS : Set goFS = CreateObject("Scripting.FileSystemObject") 
Dim s : s  = goFS.OpenTextFile("43009791.txt").ReadAll() 
Dim r : Set r = New RegExp 
r.Global = True 
r.Multiline = True 
r.Pattern = "^""(\w+)=([^""]+)""" 
Dim d : Set d = CreateObject("Scripting.Dictionary") 
Dim m 
For Each m In r.Execute(s) 
    d(m.Submatches(0)) = m.Submatches(1) 
Next 
Dim k 
For Each k In d.Keys() 
    WScript.Echo k, "=>", d(k) 
Next 

輸出:

cscript 43009791.vbs 
FORMAT => U2 
TS => 600581 
ST => 1001038 
TC => 60055 
PIN => 100577 
SN => GXT220.1 
相關問題