使用VBScript从CSV文件中删除列

使用VBScript从CSV文件中删除列,csv,vbscript,multiple-columns,remove,Csv,Vbscript,Multiple Columns,Remove,我需要使用VBScript删除CSV文件中的各个列 要删除的列从编号101到编号106 下面的代码不会删除任何列 帮我做这件事 Const ForReading = 1, ForWriting = 2, ForAppending = 8 Dim fso, strLine, dataArray, clippedArray() InputFile="C:\input.csv" OutputFile="C:\input_n_1.csv" Set fso =

我需要使用VBScript删除CSV文件中的各个列

要删除的列从编号101到编号106

下面的代码不会删除任何列

帮我做这件事

Const ForReading = 1, ForWriting = 2, ForAppending = 8
Dim fso, strLine, dataArray, clippedArray()

InputFile="C:\input.csv"
OutputFile="C:\input_n_1.csv"

Set fso = CreateObject("Scripting.FileSystemObject")

Set InFile = fso.OpenTextFile(InputFile, ForReading)
Set OutFile = fso.OpenTextFile(OutputFile, ForWriting, True)

Do While InFile.AtEndOfStream <> True

    strLine = InFile.ReadLine
    ReDim Preserve clippedArray(x)
    clippedArray(x) =  Split(strLine,";")

    intCount = 0
    newLine = ""

    For Each Element In clippedArray(x)    
        If intCount <> (101 OR 102 OR 103 OR 104 OR 105 OR 106) Then
           EndChar = "|"
           newLine = newLine & Element & EndChar
        End If
        intCount = intCount + 1 
    Next

    OutFile.WriteLine newLine

Loop

InFile.Close
OutFile.Close

WScript.Echo "Done"   
Const for reading=1,for write=2,for appending=8
Dim fso、strLine、数据阵列、clippedArray()
InputFile=“C:\input.csv”
OutputFile=“C:\input\n\u 1.csv”
设置fso=CreateObject(“Scripting.FileSystemObject”)
设置infle=fso.OpenTextFile(InputFile,ForReading)
设置OutFile=fso.OpenTextFile(OutputFile,ForWriting,True)
在填充时执行。AtEndOfStream为True
strLine=infle.ReadLine
激光雷达(x)
clippedArray(x)=拆分(strLine,“;”)
整数=0
换行符=“”
对于光线中的每个元素(x)
如果intCount(101或102或103或104或105或106),则
EndChar=“|”
换行符=换行符、元素和结束字符
如果结束
intCount=intCount+1
下一个
OutFile.WriteLine换行符
环
填充,关闭
出口,关闭
Echo“完成”

循环中的代码有一些问题。例如,尝试
ReDim
您的
clippedArray
数组时,没有为
x
指定任何值。也不需要
保留
数组中的内容,因为您要在其中放置新数据

循环的内部可以简化并放入如下功能:

Function GetUpdatedLine(p_sLine)
    Dim arrColumns
    Dim sNewLine
    Dim sEndChar
    Dim iCounter
    
    ' Split line into columns
    arrColumns = Split(p_sLine, ";")

    ' Initialize variables
    sNewLine = ""
    sEndChar = "|"

    For iCounter = 1 To UBound(arrColumns) + 1
    
        Select Case iCounter
            
            Case 101, 102, 103, 104, 105, 106
                ' Skip these columns
                
            Case Else
                ' Add to new line
                If sNewLine <> "" Then sNewLine = sNewLine & sEndChar ' Add separator
                sNewLine = sNewLine & arrColumns(iCounter - 1) ' arrColumns is a zero-based array
        End Select
    
    Next

    GetUpdatedLine = sNewLine

End Function
函数GetUpdatedLine(p_sLine) 暗棱柱 暗淡的斯奈尔线 Dim sEndChar 暗色计数器 '将行拆分为列 arrColumns=Split(p_sLine,“;”) '初始化变量 sNewLine=“” sEndChar=“|” 对于iCounter=1到UBound(arrColumns)+1 选择案例i计数器 案件101、102、103、104、105、106 '跳过这些列 其他情况 '添加到新行 如果是sNewLine“”,则sNewLine=sNewLine&sEndChar'添加分隔符 sNewLine=sNewLine&arrColumns(iCounter-1)'arrColumns是一个基于零的数组 结束选择 下一个 GetUpdatedLine=sNewLine 端函数 现在可以将您的循环更新为:

Do While InFile.AtEndOfStream <> True
    OutFile.WriteLine GetUpdatedLine(InFile.ReadLine)
Loop
Do While infle.AtEndOfStream True
OutFile.WriteLine GetUpdatedLine(infle.ReadLine)
环