vbscript查找不包含文本“Ack”的文本文件的最后一行

时间:2013-09-29 09:28:57

标签: vbscript

我有一个日志文件,我想用vbscript阅读,该文件每个命令有两行,例如命令本身,然后在下一个命令上,就像上一行的确认一样。

所以我得到了:

xxx,xxx,xxx,Blah - 更多一些等等。

xxx,xxx,xxx,,Blah Ack

我想直接到日志文件的底部,然后逐行读回来,直到我到达第一行没有“Ack”,然后将该行放入变量中把它写出来。

我可以让它的大部分工作,我只能弄清楚如何逐行阅读,直到我看到一条没有Ack的行?

有没有人有任何想法?

这就是我要唱到文件底部的内容:

Const ForReading = 1
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("Y:\Selcall\logs\DEC-20130929.LOG", ForReading)

Do Until objFile.AtEndOfStream
  strNextLine = objFile.ReadLine
  If Len(strNextLine) > 0 Then
    strLine = strNextLine
  End If
Loop

objFile.Close

Wscript.Echo strLine
Wscript.Echo Right(strLine, Len(strLine) - 35)

2 个答案:

答案 0 :(得分:1)

从技术上讲,您无法从前面读取文件,因此您必须从头开始阅读该文件,并记住不包含关键字Ack的最后一行:

Do Until objFile.AtEndOfStream
  strNextLine = objFile.ReadLine
  If InStr(strNextLine, "Ack") = 0 Then strLine = strNextLine
Loop

循环终止后,变量strLine包含您要查找的行。

答案 1 :(得分:0)

您不能使用FSO的TextStream对象向后移动/读取。您必须从上到下阅读文件并存储/覆盖每个候选行;在.Close之后,存储将包含最后/期望的候选者。