通过VBSCRIPT合并两个CSV文件时获取多个标头 Sub-Tarun() Dim sFolderIn'作为字符串 Dim sFolderOut'作为字符串 “名称”作为字符串 “名称”作为字符串 Dim sData'作为字符串 sFolderIn=“C:\Users\tbhalla2\Desktop\tarun” sFolderOut=“C:\Users\tbhalla2\Desktop\tarun\New” sNewFName=“AllCombined.csv” 如果Dir(sFolderOut,vbDirectory)=“”,则MkDir sFolderOut sFName=Dir(sFolderIn&“\*.csv”) 如果名称为“”,则 打开sFolderOut&“\”&sNewFName,输出为#1 做 打开sFolderIn&“\”&sFName以作为#2输入 sData=输入(LOF(2),2) 如果Len(sData)那么 打印#1,sData; 如果右$(sData,2)vbCrLf,则打印#1, 如果结束 关闭#2 名称sFolderIn&“\”&sFName作为sFolderOut&“\”&sFName sFName=Dir() 循环直到sFName=“” 关闭#1 如果结束 端接头

通过VBSCRIPT合并两个CSV文件时获取多个标头 Sub-Tarun() Dim sFolderIn'作为字符串 Dim sFolderOut'作为字符串 “名称”作为字符串 “名称”作为字符串 Dim sData'作为字符串 sFolderIn=“C:\Users\tbhalla2\Desktop\tarun” sFolderOut=“C:\Users\tbhalla2\Desktop\tarun\New” sNewFName=“AllCombined.csv” 如果Dir(sFolderOut,vbDirectory)=“”,则MkDir sFolderOut sFName=Dir(sFolderIn&“\*.csv”) 如果名称为“”,则 打开sFolderOut&“\”&sNewFName,输出为#1 做 打开sFolderIn&“\”&sFName以作为#2输入 sData=输入(LOF(2),2) 如果Len(sData)那么 打印#1,sData; 如果右$(sData,2)vbCrLf,则打印#1, 如果结束 关闭#2 名称sFolderIn&“\”&sFName作为sFolderOut&“\”&sFName sFName=Dir() 循环直到sFName=“” 关闭#1 如果结束 端接头,vbscript,Vbscript,在执行循环之前,创建一个计数器变量,例如iFilesRead,并将其设置为0 Sub Tarun() Dim sFolderIn 'As String Dim sFolderOut 'As String Dim sFName 'As String Dim sNewFName 'As String Dim sData 'As String sFolderIn = "C:\Users\tbhalla2\Desktop\

在执行
循环之前,创建一个计数器变量,例如
iFilesRead
,并将其设置为0

Sub Tarun()
    Dim sFolderIn   'As String
    Dim sFolderOut  'As String
    Dim sFName      'As String
    Dim sNewFName   'As String
    Dim sData       'As String

    sFolderIn = "C:\Users\tbhalla2\Desktop\tarun"
    sFolderOut = "C:\Users\tbhalla2\Desktop\tarun\New"
    sNewFName = "AllCombined.csv"

    If Dir(sFolderOut, vbDirectory) = "" Then MkDir sFolderOut
    sFName = Dir(sFolderIn & "\*.csv")
    If sFName <> "" Then
        Open sFolderOut & "\" & sNewFName For Output As #1
        Do
            Open sFolderIn & "\" & sFName For Input As #2
            sData = Input(LOF(2), 2)
            If Len(sData) Then
                Print #1, sData;
                If Right$(sData, 2) <> vbCrLf Then Print #1,
            End If
            Close #2
            Name sFolderIn & "\" & sFName As sFolderOut & "\" & sFName
            sFName = Dir()
        Loop Until sFName = ""
        Close #1
    End If
End Sub
然后,在
Do
循环中,递增该计数器:

Dim iFilesRead
iFilesRead = 0 
这是为了跟踪是否至少读取了一个文件,并在读取一个文件后删除第一行

在将
sData
写入输出文件之前,请检查iFileRead,必要时删除第一行(标题)(iFileRead>1):

您的代码应该如下所示:

If iFilesRead > 1 Then
    sData = Mid(sData, InStr(sData, vbCrLf) + 2)
End If
Do
打开sFolderIn&“\”&sFName以作为#2输入
sData=输入(LOF(2),2)
iFilesRead=iFilesRead+1
如果Len(sData)那么
如果iFileRead>1,则
sData=Mid(sData,仪表(sData,vbCrLf)+2)
如果结束
打印#1,sData;
如果右$(sData,2)vbCrLf,则打印#1,
如果结束
关闭#2
名称sFolderIn&“\”&sFName作为sFolderOut&“\”&sFName
sFName=Dir()
循环直到sFName=“”

合并文件头D E F Header A B C时,我多次收到头
If iFilesRead > 1 Then
    sData = Mid(sData, InStr(sData, vbCrLf) + 2)
End If
Do

    Open sFolderIn & "\" & sFName For Input As #2
    sData = Input(LOF(2), 2)

    iFilesRead = iFilesRead + 1

    If Len(sData) Then

        If iFilesRead > 1 Then
            sData = Mid(sData, InStr(sData, vbCrLf) + 2)
        End If

        Print #1, sData;
        If Right$(sData, 2) <> vbCrLf Then Print #1,

    End If

    Close #2

    Name sFolderIn & "\" & sFName As sFolderOut & "\" & sFName
    sFName = Dir()

Loop Until sFName = ""