从文本文件中读取第5行

时间:2017-02-22 02:44:30

标签: vbscript

我必须通过vb脚本从日志文件中读取第5行。 有人可以指导我怎么做吗?

我正在使用以下代码,它只读取最后一行并回显最后一行和行数,需要对其进行增强。

Dim fh, fso, sLastLine, lineCount

Set fso = CreateObject("Scripting.FileSystemObject")
Set fh = fso.OpenTextFile( "E:\Coding\VB\demo.txt" )
sLastLine = ""
lineCount = 0
Do Until fh.AtEndOfStream
    lineCount = lineCount + 1
    sLastLine =  fh.ReadLine()
Loop
fh.Close

WScript.Echo sLastLine
WScript.Echo lineCount

demo.txt的内容如下:

zcZcxZCsdfdfsfd
aaaaa
bbbb
cccc
dddd
eeee

最后有4个空行,我必须在这里阅读“eeee”。

3 个答案:

答案 0 :(得分:2)

一个简单的解决方案是使用.net框架中的System.Collections.Queue。它很有用,它很简单,不需要大量的RAM,因为文本行在读取时会被丢弃,但它确实需要安装.net框架。任何版本的.net框架都可以。

Option Explicit

Const LastLinesCount = 5

Dim DemoFile : Set DemoFile = CreateObject("Scripting.FileSystemObject").OpenTextFile("demo.txt")
Dim Queue : Set Queue = CreateObject("System.Collections.Queue")
Dim i

Do While Not DemoFile.AtEndOfStream
    Queue.Enqueue DemoFile.ReadLine
    If Queue.Count > LastLinesCount then Queue.Dequeue
Loop

For i = 1 to LastLinesCount
    WScript.echo Queue.Dequeue
Next

DemoFile.Close

答案 1 :(得分:0)

听起来你可以修剪结束并获得最后一行(未测试):

Set fso = CreateObject("Scripting.FileSystemObject")
Set fh = fso.OpenTextFile( "E:\Coding\VB\demo.txt" )
text = Trim(fh.ReadAll())
i = InStrRev(text, vbLf)
line = Mid(text, i + 1)

答案 2 :(得分:0)

怎么样

Set fso = CreateObject("Scripting.FileSystemObject")
Set fh = fso.OpenTextFile("D:\demo.txt")
strin = Split(fh.readall, vbNewLine)
wscript.echo strin(fh.Line - 5)