有没有办法在 vbscript 中设置起始读取行?

Is there a way to set the starting read line in vbscript?

我有一个文本文件,它有超过 85k 行 有没有办法设置起跑线?例如;我已经将第 1-10 行读取并写入其他文件,并希望在第 12 行中获取一个值以将其添加到我编写的最后一行中。我只想读第 12 行。

  1. Text/Sample/1/GetValue/12
  2. Text/Sample/2/GetValue/11
  3. Text/Sample/3/GetValue/10
  4. Text/Sample/4/GetValue/9
  5. Text/Sample/5/GetValue/8
  6. Text/Sample/6/GetValue/7
  7. Text/Sample/7/GetValue/6
  8. Text/Sample/8/GetValue/5
  9. Text/Sample/9/GetValue/4
  10. Text/Sample/10/GetValue/3
  11. Text/Sample/11/GetValue/2
  12. Text/Sample/12/GetValue/1

TextStream 对象仅提供顺序前向阅读。请参阅 .Skip, .SkipLine, .Read, .ReadLine, and .ReadAll.

的文档

因此您必须 skip/read 到所需的位置,或者对文件的全部内容 (.Readall) 进行一些 Mid 字符串处理。

这是一个可以为您解决问题的函数示例:

Option Explicit
Dim Title,FromLine,ToLine,fso,Readfile,strBuff,InputFile,TotalNbLines
Title = "Extract Lines From TextFile"
InputFile = "c:\test.txt"
Set fso = CreateObject("Scripting.FileSystemObject")
Set Readfile = Fso.OpenTextFile(InputFile,1)
strBuff = Readfile.ReadAll
TotalNbLines = Readfile.Line
Readfile.Close
'*******************************************************************************************************
MsgBox "The total number of lines in this file """& InputFile &""" = "& TotalNbLines,VbInformation,Title
'*******************************************************************************************************
MsgBox "Extract the 3 last lines" & vbcrlf & vbcrlf &_
ExtractLinesFromTextFile(InputFile,TotalNbLines - 2,TotalNbLines),64,Title 'To extract the 3 last lines
'*******************************************************************************************************
MsgBox "Extract line from line 1 to 2" & vbcrlf & vbcrlf &_
ExtractLinesFromTextFile(InputFile,1,2),64,Title 'Extract line from line 1 to 2
'*******************************************************************************************************
MsgBox "Extract line N°2" & vbcrlf & vbcrlf &_
ExtractLinesFromTextFile(InputFile,2,2),64,Title 'Extract line N°2
 '*******************************************************************************************************
MsgBox "Extract line from line 1 to 5" & vbcrlf & vbcrlf &_
ExtractLinesFromTextFile(InputFile,1,5),64,Title 'Extract line from line 1 to 5
 '*******************************************************************************************************
MsgBox "Extract line from line 1 to 10" & vbcrlf & vbcrlf &_
ExtractLinesFromTextFile(InputFile,1,10),64,Title'Extract line from line 1 to 10
 '*******************************************************************************************************
MsgBox "Extract line N° 12" & vbcrlf & vbcrlf &_
ExtractLinesFromTextFile(InputFile,12,12),64,Title'Extract line N° 12
'*********************************************************************************************************
Public Function ExtractLinesFromTextFile(ByRef TextFile, ByRef FromLine, ByRef ToLine) '<-- Inclusive
    Const TristateUseDefault = -2 'To Open the file using the system default.
    On Error Resume Next
    If FromLine <= ToLine Then
        With CreateObject("Scripting.FileSystemObject").OpenTextFile(TextFile,1,true,TristateUseDefault)
            If Err.number <> 0 Then
                MsgBox err.description,16,err.description
                Exit Function
            Else
                Do Until .Line = FromLine Or .AtEndOfStream
                    .SkipLine
                Loop
                Do Until .Line > ToLine Or .AtEndOfStream
                    ExtractLinesFromTextFile = ExtractLinesFromTextFile & (.ReadLine & vbNewLine)
                Loop
            End If
        End With
    Else
        MsgBox "Error to Read Line in TextFile", vbCritical,"Error to Read Line in TextFile"
    End If
End Function
'*********************************************************************************************************