如何创建批处理文件以从csv文件中删除特定列的双引号
输入csv文件:
"DocumentType","Company","Division","SeasonYear","Style"
"832","XYZ","S17","2017","S"
"832","XYZ","S17","2017","M"
我想删除第1列中的双引号,其中值将是标题(第一个记录)中的DocumentType和剩余记录中的832。
预期结果应为:
DocumentType,"Company","Division","SeasonYear","Style"
832,"XYZ","S17","2017","S"
832,"XYZ","S17","2017","M"
我尝试使用下面的批处理脚本,但它替换了文件中的所有双引号。
@echo off
setlocal EnableDelayedExpansion
set FileIn=out.csv
set FileOut=in2.csv
(
for /F "usebackq tokens=*" %%A in ("%FileIn%") do (
set Line=%%A
set Line=!Line:"=!
for /L %%B in (1,1,20) do (
set Line=!Line: ,=,!
set Line=!Line:, =,!
)
echo.!Line!
)
) > "%FileOut%"
请告知。
答案 0 :(得分:2)
单行批处理文件解决方案:
@(For /F Tokens^=1*Delims^=^" %%A In (input.csv) Do @Echo %%A%%B)>output.csv
根据需要更改输入和输出.csv文件名。
答案 1 :(得分:0)
@ECHO Off
SETLOCAL
SET "sourcedir=U:\sourcedir"
SET "destdir=U:\destdir"
SET "filename1=%sourcedir%\q46039339.txt"
SET "outfile=%destdir%\outfile.txt"
(
FOR /f "usebackqtokens=1*delims=," %%a IN ("%filename1%") DO ECHO %%~a,%%b
)>"%outfile%"
GOTO :EOF
您需要更改sourcedir
和destdir
的设置以适合您的具体情况。
我使用了一个名为q46039339.txt
的文件,其中包含我的测试数据。
生成定义为%outfile%
的文件读取输入文件的每一行,将第一个,
之前的部分分配给%%a
,将剩余部分分配给%%b
使用~
运算符删除%%a
中的引号,添加回commad并重新调整该行的其余部分。
围绕for
语句的括号允许将echo
es重定向到定义的新文件。
答案 2 :(得分:0)
这是批量代码,完全符合我的要求。首先读取所有csv文件并替换“DocumentType”= DocumentType和“832”= 832
@echo off
setlocal EnableDelayedExpansion
copy 832*.csv 832_tmp.csv
set FileIn=832_tmp.csv
set FileOut=832.csv
(
for /F "usebackq tokens=*" %%A in ("%FileIn%") do (
set Line=%%A
REM replace "DocumentType" to DocumentType and "832" to 832
set Line=!Line:"DocumentType"=DocumentType!
set Line=!Line:"832"=832!
echo.!Line!
) > 832.csv REM wtite output file
)
del 832_tmp.csv REM delete temporary created file