从CSV文件提取的数据缺少一些数据
我有一个脚本,它从CSV文件中提取数据,并将其重新打印到另一个文件中,当与搜索字符串匹配时,从最后一条记录中删除额外字段。见下文从CSV文件提取的数据缺少一些数据,csv,batch-file,batch-processing,Csv,Batch File,Batch Processing,我有一个脚本,它从CSV文件中提取数据,并将其重新打印到另一个文件中,当与搜索字符串匹配时,从最后一条记录中删除额外字段。见下文 echo off setlocal EnableDelayedExpansion pause set cur=0 FOR /F "delims=" %%A in (INPUT.csv) DO ( set line=%%A set line=!line:,,=, ,! FOR /F "tokens=1-11 delims=," %%G in (^"!line!^")
echo off
setlocal EnableDelayedExpansion
pause
set cur=0
FOR /F "delims=" %%A in (INPUT.csv) DO (
set line=%%A
set line=!line:,,=, ,!
FOR /F "tokens=1-11 delims=," %%G in (^"!line!^") DO (
if "%%G"=="" (echo.)
if "%%G"==""FILENAME_YYYYMMDD.CSV"" (
echo %%G,%%H,%%I,%%J >> output.csv
goto EOF
) else (
echo %%G,%%H,%%I,%%J,%%K,%%L,%%M,%%N,%%O,%%P,%%Q >> output.csv
)
set /a cur=cur+1
)
)
:EOF
echo %cur%
pause
我的问题有两方面
"Parent","CODE1","Child ONE",CODEA,"COMPANY","","Address1",,"SUBURB","STATE","2000"
"FILENAME_20150529.csv","20150529","15:09:30",187,"","","","","","",""
之后
"Parent","CODE1","Child ONE",CODEA,"COMPANY","","Address1", ,"SUBURB1","STATE2"
"FILENAME_20150529.csv","20150529","15:09:30",187
help set
并使用set=:~
子字符串提取
set fn=%%G
set fn=!fn:~1,9!
if /i !fn!==FILENAME_ (
for
或使用set
)不适用于复杂的csv解析器,因为有关于逗号和引号的复杂规则。在您的情况下,字段中可能有一些不平衡的引号或逗号,导致解析失败提示:将
如果不是“%comspec%”==%comspec:EXE=%回显匹配的输出与如果不是“%comspec%”==%comspec:YXY=%回显匹配的输出进行比较
2。请回答您的问题,并添加原始记录和更改记录的示例作为原始记录。可以以逗号开头,或者在数据字段中包含额外的逗号(不管是否用双引号括起来)。@JosefZ,在我编辑问题后,我马上解决了问题。“Child ONE”字段中有逗号,导致最后一个字段不出现。