本主题介绍用于从文件读取结果的VBscript

本主题介绍用于从文件读取结果的VBscript,vbscript,Vbscript,我理解FSO不知道如何读取文件中最后一行的内容。 我在这里的场景是验证最后一行,但只有一行,并从中得到结果 假设,如果我需要在最后但只有1行中得到通过或失败的结果。因为我从第一行开始,所以获得正确结果的场景是有限的,因为前面的文件中有通过或失败的可能性 我在文件中的最后两行是 失败 完成 或 通过 完成 为了得到实际结果,我使用嵌套的IF验证来得到结果。下面是相同的代码片段 str1 = "Passed" str2 = "Failed" str3="Done!!!!"

我理解FSO不知道如何读取文件中最后一行的内容。 我在这里的场景是验证最后一行,但只有一行,并从中得到结果

假设,如果我需要在最后但只有1行中得到通过或失败的结果。因为我从第一行开始,所以获得正确结果的场景是有限的,因为前面的文件中有通过或失败的可能性

我在文件中的最后两行是 失败 完成

通过 完成

为了得到实际结果,我使用嵌套的IF验证来得到结果。下面是相同的代码片段

 str1 = "Passed"
    str2 = "Failed"
    str3="Done!!!!"
    Do Until objFile.AtEndOfStream
        str=objFile.ReadLine
        if StrComp(str, str1) = 0 Then
            str=objFile.ReadLine
        if StrComp(str,str3) = 0 Then
            result="PASS"
        End if
        elseif StrComp(str, str2) = 0 Then
            str = objFile.ReadLine
            if StrComp(str,str3) = 0 Then
                result="FAIL"
            End if
        End if
        Loop

这会影响性能。是否有其他方法可以更好地实现此实现

这里有一个函数,它接受一个文件名并返回从第二行到最后一行的读取:

Function PenultimateLine(fname)
    Dim fso, ts, line1, line2

    Set fso = CreateObject("Scripting.FileSystemObject")
    Set ts = fso.OpenTextFile(fname)

    Do Until ts.AtEndOfStream
        line1 = line2
        line2 = ts.ReadLine
    Loop
    ts.Close

    PenultimateLine = line1
End Function
您可以使用此函数提取该行,然后根据“通过”或“失败”对其进行测试(顺便说一句,这可以通过
=
而不是
StrCmp
完成)


这会占用内存,不适用于非常大的文件。

为什么要用
vb.net
标记?看起来更像VBScript.VB6!=VB.Net!=VBA。请仅使用与您的问题相关的标签。不要只添加听起来熟悉或以相同字母开头的标签。猫和车不是一回事,因为它们都以字母“ca”开头。标签在这里有特定的含义和用途。如果您不确定标签是否适用,请阅读其说明。如果您仍然不确定,请不要使用它;如果需要,这里会有人添加它。
A = Split(objfile.readall, vbcrlf)
B = A(ubound(A)-2)