需要使用批处理文件将csv文件中的所有记录的“””替换为“”

时间:2019-10-16 16:25:19

标签: csv batch-file

我需要将csv文件中的"""替换为"",以替换文件中包含这些字符串的行。

基本上,我需要这个:

"Pipe 60"""

看起来像这样:

"Pipe 60""

该字段是将数据导入回我正在使用的清单软件中所需的关键字段。当我在记事本中删除多余的报价时,它会毫无问题地导入。问题是,有几个像这样的关键字段,并且通过记事本编辑每个字段很费时间。

我尝试了在以前的帖子中找到的以下代码,但输出文件未显示任何数据:

@echo off
setlocal enableextensions enabledelayedexpansion

(for /f "tokens=*" %%f in (a.csv) do if not "%%f"=="" (
        set "line=%%f"
        set "line=!line"""=""!"
        echo(!line!
)) > b.csv

endlocal

这是我的csv文件的示例:

000,,PipeSm,,1
000,,"Pipe 60""",,1
000,,PipeMd,,1

我不经常使用批处理文件,因此将不胜感激。

1 个答案:

答案 0 :(得分:0)

按原样尝试:

@echo off
SET "ImportFolder=C:\Users\jdoe\Desktop\Removing Quotes\ImportFolder
setlocal enabledelayedexpansion
(for /f "tokens=*" %%f in (a.csv) do (
        set "line=%%f"
        echo(!line:"""=""!
 )
)> b.csv

编辑 根据您的评论,进行一下操作。.仍然假设文件名为a.csv,并且还请注意,这会将更改写回到原始文件,因此请首先在虚拟文件上进行测试。

@echo off
set "_infile=C:\Users\jdoe\Desktop\Removing Quotes\ImportFolder\a.csv"
for /f "tokens=2* delims=]" %%f in ('type "%_infile%" ^| find /v /n "" ^& break ^> "%_infile%"') do (
       set "line=%%f"
       setlocal enabledelayedexpansion
       set "line=!line:"""=""!"
       echo(!line!
       endlocal
)>>"%_infile%"