2017-09-09 51 views
0

我有一個txt文件,這樣的:獲取特定行,並將它們寫在一行

 
GLP 
07-Sep-2017 
09:13 

8.186 pH 
-59.5 mV 
25.5 ºC ATC 
Manual EP 
PRO_ISM 
6270340 
Last cal.: 14-Aug-2017 14:51 
S210 
B625637220 
EMF 





GLP 
07-Sep-2017 
08:43 

8.180 pH 
-59.2 mV 
25.5 ºC ATC 
Manual EP 
PRO_ISM 
6270340 
Last cal.: 14-Aug-2017 14:51 
S210 
B625637220 
EMF 





GLP 
07-Sep-2017 
08:13 

8.180 pH 
-59.2 mV 
25.6 ºC ATC 
Manual EP 
PRO_ISM 
6270340 
Last cal.: 14-Aug-2017 14:51 
S210 
B625637220 
EMF 

... 

我想獲得:

 
07-Sep-2017,08:43, ,8.180 pH,-59.2 mV,25.5 ºC ATC 
07-Sep-2017,08:13, ,8.180 pH,-59.2 mV,25.6 ºC ATC 
07-Sep-2017,07:43, ,8.180 pH,-59.2 mV,25.6 ºC ATC 

我已經寫了的VBScript下面,但我得到在同一行的一切,如:

 
,07-Sep-2017,08:43, ,8.180 pH,-59.2 mV,25.5 ºC ATC,07-Sep-2017,08:13, ,8.180 pH,-59.2 mV,25.6 ºC ATC,07-Sep-2017,07:43, ,8.180 pH,-59.2 mV,25.6 ºC ATC 

我沒有找到把我vbCrLf我的網絡連接後的方式第一塊。

你有什麼想法嗎?

Set objFSO = CreateObject("Scripting.FileSystemObject") 
Set objTextFile = objFSO.OpenTextFile("C:\Users\Jean\Desktop\pH\M092735.TXT", 1) 
Set objTextFile2 = objFSO.CreateTextFile("C:\Users\Jean\Desktop\pH\ph.txt", 8) 

Do While objTextFile.AtEndOfStream = False 
    Line = objTextFile.ReadLine 

    If Line = "GLP" Then 
     For i = 1 To 6 
      strLine = strLine & "," & objTextFile.ReadLine 
     Next 
     strLine2 = strLine & vbCrLf 
    End If 
Loop 

objTextFile2.write strLine2 

objTextFile.Close 
objTextFile2.Close 

回答

1

我就告訴你什麼問題都以點形式:

  1. 比較。我看不出這將如何工作。 ReadLine將返回包括尾隨空格的字符串。比較需要改變,以

    If Left(Line, 3) = "GLP" Then 
    
  2. strLine不復位。所以數據呈指數增長它加到前面的結果到下一個結果。添加這個IfFor聲明

    strLine = "" 
    
  3. 只有最後一行將被保存之間。要保存所有的線路,strLine2語句需要改爲

    strLine2 = strLine2 & strLine & vbCrLf 
    

    或者,你可以在循環後刪除寫入和改變連接來

    objTextFile2.WriteLine strLine 
    
  4. 您正在使用的符號度數是男性序數指示器(Unicode U + 00BA)而不是度數符號(Unicode U + 00B0)。這是一個非常常見的錯誤。你會注意到,當您查看數據,有時它顯示爲帶下劃線一定程度的象徵。

+0

只需複查的數據 - 它已經尾隨空格,不CRLF。答案已更正。 – cup

+0

目前還不清楚後面的空格是否在實際輸入數據。 OP可能會在問題中添加它們以使線條正確斷裂。 –

0

非常感謝您!它工作完美。

strLine = "" 

是事

這裏完整的工作代碼

Set objFSO = CreateObject("Scripting.FileSystemObject") 
Set objTextFile = objFSO.OpenTextFile("C:\Users\Jean\Desktop\pH\M092735.TXT", 1) 
Set objTextFile2 = objFSO.CreateTextFile("C:\Users\Jean\Desktop\pH\ph.txt", 8) 

Do While objTextFile.AtEndOfStream=false 
    Line = objTextFile.ReadLine 

If Line = "GLP" Then 
    strLine = "" 
    For i = 1 to 6 
    strLine = strLine & "," & objTextFile.ReadLine 
    Next 
    strLine2 = strLine2 & strLine & vbcrlf 
End If 
Loop 

    objTextFile2.writeline strLine2 

objTextFile.Close 
objTextFile2.Close 
相關問題