Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 如何使用bat文件将逗号替换为分号并删除文件中的双引号_Batch File - Fatal编程技术网

Batch file 如何使用bat文件将逗号替换为分号并删除文件中的双引号

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

实际上我在批处理编程方面很差

我有一个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 (
  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=!变量:,=;!“