这段代码有什么问题?我写了这段代码,所以我可以从csv文件中删除一个列

时间:2015-03-18 02:53:10

标签: csv batch-file

我编写了这段代码,因此我可以从csv文件中删除一列。

@echo off
setlocal enableextensions enabledelayedexpansion
type nul > tmp.txt
SET /A COUNT=0
for /F "tokens=*" %%A in (d.csv) do (
    set LINE="%%A"
    set /A COUNT+=1
    for /F "tokens=1,2,3,4,5,6,7,8,* delims=," %%a in (!LINE!) do (
        set row[0]=%%a
        set row[1]=%%b
        set row[2]=%%c
        set row[3]=%%d
        set row[4]=%%e
        set row[5]=%%f
        set row[6]=%%g
        set row[7]=%%h
)       

    echo !row[0]!,!row[2]!,!row[3]!,!row[4]!,!row[5]!,!row[6]! >>tmp.txt
        echo.
)
endlocal



Test file:
A1,B1,C1,D1,la la,,1
A2,B2,C2,D2, ,fef 3,
A3,B3,C3,D3,be be ,bo,bo 1
A4,B4,C4,D4,tu tu,tu 7,881

Output file:
A1,C1,D1,la la,1, 
A2,C2,D2, ,fef 3, 
A3,C3,D3,be be ,bo,bo 1 
A4,C4,D4,tu tu,tu 7,881 

我不知道为什么在第一行的输出文件中删除了,并且最后添加了,

1 个答案:

答案 0 :(得分:0)

你的代码正在做它应该做的事情......请参阅@anishane评论。 如果您要做的是用空格替换空字符串,请在第一个FOR循环之前添加此行,以将数组的每个元素初始化为空格。

for /L %%A in (0,1,7) do set "row[%%A]= "