VBS从文件中删除行

时间:2013-11-21 18:01:07

标签: vbscript

我目前无法从文本文件中删除前两行。我在下面使用以下代码。它在一个小文本文件上工作得很好,但它不适用于非常大的文本文件。我一直试图让它工作的文件大小超过130,000kb。

我没有收到任何错误消息,它只删除文件中的所有内容,使其完全空白。无论如何我可以让这个工作吗?

Const FOR_READING = 1 
Const FOR_WRITING = 2 
strFileName = "\\File\test Scp\ZRAS.txt" 
iNumberOfLinesToDelete = 2

Set objFS = CreateObject("Scripting.FileSystemObject") 
Set objTS = objFS.OpenTextFile(strFileName, FOR_READING) 
strContents = objTS.ReadAll 
objTS.Close 

arrLines = Split(strContents, vbNewLine) 
Set objTS = objFS.OpenTextFile(strFileName, FOR_WRITING) 

For i=0 To UBound(arrLines) 
If i > (iNumberOfLinesToDelete - 1) Then 
  objTS.WriteLine arrLines(i) 
End If 
Next 


MSGBOX "Done"

1 个答案:

答案 0 :(得分:2)

不要在.ReadAll(),Split()和Array循环上浪费内存和循环。只是做:

...
Set tsIn  = objFS.OpenTextFile(strFileName, FOR_READING) 
Set tsOut = objFS.OpenTextFile(strFileName, FOR_WRITING) 

tsIn.SkipLine  ' could use a loop to skip first n lines
tsIn.SkipLine

Do Until tsIn.AtEndOfStream
   tsOut.WriteLine tsIn.ReadLine()
Loop
tsIn.Close 
tsOut.Close 

(未经测试)