Batch file 如何使用bat文件将逗号替换为分号并删除文件中的双引号
实际上我在批处理编程方面很差 我有一个csv文件,其中的数据如下Batch file 如何使用bat文件将逗号替换为分号并删除文件中的双引号,batch-file,Batch File,实际上我在批处理编程方面很差 我有一个csv文件,其中的数据如下 "column1","column2","column2" "value1","value2","value3" 我必须用分号替换逗号,并删除双引号 我的输出应该是这样的 column1;column2;column2 value1;value2;value3 @echo off setlocal enabledelayedexpansion for /f "delims==" %%A in (input.csv) do
"column1","column2","column2"
"value1","value2","value3"
我必须用分号替换逗号,并删除双引号
我的输出应该是这样的
column1;column2;column2
value1;value2;value3
@echo off
setlocal enabledelayedexpansion
for /f "delims==" %%A in (input.csv) do (
set string=%%A & echo !string:,=;! >> output.csv
)
我试过这样做
column1;column2;column2
value1;value2;value3
@echo off
setlocal enabledelayedexpansion
for /f "delims==" %%A in (input.csv) do (
set string=%%A & echo !string:,=;! >> output.csv
)
它将逗号替换为分号(我不知道它是什么),但如何删除双引号
@echo off
setlocal enableextensions disabledelayedexpansion
(for /f tokens^=1^-3delims^=^,^" %%a in (input.csv) do (
echo(%%a;%%b;%%c
))>output.csv
如果实际情况与发布的情况一样简单,只需在
for
命令中将“有问题的”字符定义为分隔符即可将其删除。这里有一种方法:在两次传递中,它将所有双引号\q
替换为零,然后将所有,
替换为代码>
这使用了一个名为repl.bat
-下载自:
将repl.bat
放在与批处理文件相同的文件夹中,或放在路径上的文件夹中
type "file.csv" | repl "\q" "" x |repl "," ";" L >"newfile.csv"
输入文件
"column1","column2","column2"
"value1","value2","value3"
column1;column2;column2
value1;value2;value3
输出文件
"column1","column2","column2"
"value1","value2","value3"
column1;column2;column2
value1;value2;value3
谢谢MC ND我使用了你的答案,这是开箱即用的,并且做了一些“改进”:
- 4列
- 用逗号代替定界符
- 将.csv更改为.txt文件
输入文件如下所示:
“第1栏”、“第2栏”、“第3栏”、“第4栏”
“值1”、“值2”、“值3”、“值4”
“值5”、“值6”、“值7”、“值8”
我额外添加了一行。请尝试使用set string=%%~a
Thanx作为您的回复@MC ND。。我能解释一下你的代码吗(如果你没有我的代码)…它对所有文件都有效吗???如果我有30列,格式与本页顶部显示的格式相同,会怎么样??@alluhur代码做什么?对于输入文件中的每一行,使用字符,“
(并包括”
作为分隔符,使^
转义for
选项字符串中的分隔符(不能使用引号)所需的所有^
作为分隔符/字段分隔符,获取这三个字段并用分号分隔输出。Ya。。很好,它适用于3列。。如果我有30列(实际上我有29列),我怎么能执行这个???@alluhur,不,如果你有30列,这个方法不应该被使用(你可以看到,但是太复杂了,没有必要)。您需要使用set“var=%%A”
set“var=!var:=”继续使用原始代码!“
set”var=!变量:,=;!“