2017-06-22 103 views
1

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

  1. 文本/样品/ 1 /的GetValue/12
  2. 文本/样品/ 2 /的GetValue/11
  3. 文本/样品/ 3 /的GetValue/10
  4. 文本/样品/ 4 /的GetValue/9
  5. 文本/样品/ 5 /的GetValue/8
  6. 文本/样品/ 6 /的GetValue/7
  7. 文本/样品/ 7 /的GetValue/6
  8. 文本/样品/ 8 /的GetValue/5
  9. 文本/样品/ 9 /的GetValue/4
  10. 文本/样品/ 10 /的GetValue/3
  11. 文本/样品/ 11 /的GetValue/2
  12. Text/Sample/12/GetValue/1
+1

读/写文件不能正常工作的计算机上的方式。 –

+0

@Edss检查我的答案! – Hackoo

+0

谢谢@Hackoo;但我已经找到了一个使用Readall的解决方案,并且在Split和Do Loop上工作 – Edss

回答

3

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

因此,您必须跳过/阅读到所需的位置,或者在文件的完整内容(.Readall)上执行一些Mid字符串工作。

+0

我目前正在使用skipline,但仍然不够,感谢您的建议! :) – Edss

+0

如果你想读取一个特定的行(比如说第12行),只需要使用11次跳跃线方法(可能在循环中)并读取第12行。你到底写了什么代码?在这里张贴,以便我们可以指出错误。 – Gurman

+0

除了跳跃线以外没有别的办法吗? For i = 1 To 10 \t iOpen.SkipLine Next – Edss

0

这里的功能,可以做的伎俩一个例子:

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 
'********************************************************************************************************* 
相关问题