Vbscript VBS从文件中删除行

Vbscript VBS从文件中删除行,vbscript,Vbscript,我目前无法从文本文件中删除前两行。我使用下面的代码。它在一个小的文本文件上工作得很好,但在非常大的文本文件上却不起作用。我一直在尝试让它工作的文件大小超过130000KB 我没有收到任何错误消息,它只是删除了文件中的所有内容,使其完全为空。不管怎样,我能让它工作吗 Const FOR_READING = 1 Const FOR_WRITING = 2 strFileName = "\\File\test Scp\ZRAS.txt" iNumberOfLinesToDelete = 2 S

我目前无法从文本文件中删除前两行。我使用下面的代码。它在一个小的文本文件上工作得很好,但在非常大的文本文件上却不起作用。我一直在尝试让它工作的文件大小超过130000KB

我没有收到任何错误消息,它只是删除了文件中的所有内容,使其完全为空。不管怎样,我能让它工作吗

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"

不要在.ReadAll()、Split()和数组循环上浪费内存和周期。只要做:

...
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 

(未测试)

您的标题是“VBS”,似乎是指VBScript。你的标签上写着“vb.net”。您的代码看起来像VB6。这三个是哪一个?它们不是同一件事。作为VBA对我来说很好。可能是VBS中不支持的内容。请注意,您正在写入源文件并在过程中销毁它。如果出现问题,数据就会丢失。最好先写入一个新文件,然后删除旧文件(或者重命名为BAK名称,可能文件名中有日期),然后将新文件重命名到位。我使用VBS修复了标记。我试着写一个新文件,但没有成功。它适用于小文件,但我正在处理的文件非常大,并且由于某些原因无法处理。我尝试了该代码,但收到了一条错误消息。它显示错误:输入超过文件的结尾。代码:800A003E。你知道我为什么会收到这个错误吗?。我所做的只是在设置tsIn=objFS.OpenTextFile(strFileName,用于读取)之前添加Const FOR_READING=1 Const FOR_write=2 strFileName=“\\File\test Scp\ZRAS.txt”,不管我是否能够修复该问题,但我收到另一条错误消息..invaild过程调用或片段代码:800A0005。我要发布代码below@user2974995你有没有让完整的脚本工作过?如果是的话,你能邮寄吗?