VBScript:将文本文件读入另一个文件而不跳过最后一行
VBScript: Read a text file into another one without skipping last line
我目前正在编写一个 VBscript 来将数据从一个文本文件复制到另一个文本文件,目的是跳过第一行。
我得到了一个使用我在网上找到的一些代码的版本,但它不仅跳过第一行(这部分正在工作)而且由于某种原因它也跳过最后一行。我不想跳过最后一行,但我不知道代码的哪一部分实际上跳过了我的最后一行。
需要:复制除第一行以外的所有行(行)
当前代码:复制除第一行和最后一行之外的所有行(行)
文本文件都是 CSV 文件。
任何人都知道如何实现我的需要,或者我的代码的哪一部分实际上让最后一行跳过?
提前致谢。
这是代码:
Sub ChangeCSV(strPath,strCPath)
Dim objFileSys
Dim objInText,objOutText
Dim strData1,strData2
Dim wFlg
wFlg = False
Set objFileSys = CreateObject("Scripting.FileSystemObject")
Set objInText = objFileSys.OpenTextFile(strPath, 1)
Set objOutText = objFileSys.OpenTextFile(strCPath, 2, True)
If objInText.AtEndOfLine = False Then objInText.ReadLine
Do Until objInText.AtEndOfLine = True
strData1 = objInText.ReadLine
If wFlg Then
objOutText.WriteLine strData2
Else
wFlg = True
End If
strData2 = strData1
Loop
objInText.Close
objOutText.Close
Set objInText = Nothing
Set objOutText = Nothing
Set objFileSys = Nothing
End Sub
您想使用 AtEndOfStream 属性 而不是 AtEndOfLine
。下面的代码应该可以满足您的期望:
Dim objFileSys
Dim objInText, objOutText
Dim strLine
Set objFileSys = CreateObject("Scripting.FileSystemObject")
Set objInText = objFileSys.OpenTextFile(strPath, 1)
Set objOutText = objFileSys.OpenTextFile(strCPath, 2, True)
' Read first line
If Not objInText.AtEndOfStream Then objInText.ReadLine
' Read remaining lines
Do While Not objInText.AtEndOfStream
' Get line from source file
strLine = objInText.ReadLine
' Write line to destination file
If objInText.AtEndOfStream Then
objOutText.Write strLine
Else
' Create a new line after writing the line
objOutText.WriteLine strLine
End If
Loop
objInText.Close
objOutText.Close
Set objInText = Nothing
Set objOutText = Nothing
Set objFileSys = Nothing
在最后一行,它使用Write方法来避免在目标文件的末尾创建一个额外的空行。
我目前正在编写一个 VBscript 来将数据从一个文本文件复制到另一个文本文件,目的是跳过第一行。 我得到了一个使用我在网上找到的一些代码的版本,但它不仅跳过第一行(这部分正在工作)而且由于某种原因它也跳过最后一行。我不想跳过最后一行,但我不知道代码的哪一部分实际上跳过了我的最后一行。 需要:复制除第一行以外的所有行(行) 当前代码:复制除第一行和最后一行之外的所有行(行)
文本文件都是 CSV 文件。 任何人都知道如何实现我的需要,或者我的代码的哪一部分实际上让最后一行跳过? 提前致谢。
这是代码:
Sub ChangeCSV(strPath,strCPath)
Dim objFileSys
Dim objInText,objOutText
Dim strData1,strData2
Dim wFlg
wFlg = False
Set objFileSys = CreateObject("Scripting.FileSystemObject")
Set objInText = objFileSys.OpenTextFile(strPath, 1)
Set objOutText = objFileSys.OpenTextFile(strCPath, 2, True)
If objInText.AtEndOfLine = False Then objInText.ReadLine
Do Until objInText.AtEndOfLine = True
strData1 = objInText.ReadLine
If wFlg Then
objOutText.WriteLine strData2
Else
wFlg = True
End If
strData2 = strData1
Loop
objInText.Close
objOutText.Close
Set objInText = Nothing
Set objOutText = Nothing
Set objFileSys = Nothing
End Sub
您想使用 AtEndOfStream 属性 而不是 AtEndOfLine
。下面的代码应该可以满足您的期望:
Dim objFileSys
Dim objInText, objOutText
Dim strLine
Set objFileSys = CreateObject("Scripting.FileSystemObject")
Set objInText = objFileSys.OpenTextFile(strPath, 1)
Set objOutText = objFileSys.OpenTextFile(strCPath, 2, True)
' Read first line
If Not objInText.AtEndOfStream Then objInText.ReadLine
' Read remaining lines
Do While Not objInText.AtEndOfStream
' Get line from source file
strLine = objInText.ReadLine
' Write line to destination file
If objInText.AtEndOfStream Then
objOutText.Write strLine
Else
' Create a new line after writing the line
objOutText.WriteLine strLine
End If
Loop
objInText.Close
objOutText.Close
Set objInText = Nothing
Set objOutText = Nothing
Set objFileSys = Nothing
在最后一行,它使用Write方法来避免在目标文件的末尾创建一个额外的空行。