从txt文件段落中获取特定行,并将它们写在一行上

时间:2017-09-09 14:51:20

标签: vbscript

我有一个类似的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

2 个答案:

答案 0 :(得分: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)。这是一个非常常见的错误。您会注意到,当您查看数据时,有时它会显示为带有下划线的度数符号。

答案 1 :(得分: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