【问题标题】:VBScript: Read a text file into another one without skipping last lineVBScript:将文本文件读入另一个文件而不跳过最后一行
【发布时间】:2021-02-17 17:53:40
【问题描述】:

我目前正在编写一个 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

【问题讨论】:

    标签: vba csv vbscript


    【解决方案1】:

    您想使用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 方法来避免在目标文件末尾创建额外的空白行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-20
      相关资源
      最近更新 更多