1

作为 DOS 新手,我正在尝试编写一个替换所有“|”的批处理文件 通过“,”在名为 test1.txt、test2.txt 的文件中并输出到名为 test1.csv、test2.csv 的文件中。它适用于第一个文件,但第二个 .csv 文件保留“|”。

这是我的代码:

@echo off
setlocal enabledelayedexpansion

for %%a in (test*.txt) do (
set line=%%a
type "!line:|=","!" > %%~na.csv
)

我读到一个线程,提到“line”变量可能在解析块一次后被更改,但我不知道如何解决这个问题(我在“type”之前尝试了一些修改,比如“call”,但仍然相同)。

任何帮助都会很棒。谢谢 !

4

1 回答 1

1

编辑:这些在这里工作。

@echo off
setlocal enabledelayedexpansion
for %%a in (test*.txt) do (
  for /f "delims=" %%b in ('type "%%a" ') do (
   set "line=%%b"
   set "line=!line:|=,!"
   >> "%%~na.csv" echo !line!
  )
)

使用来自http://www.dostips.com/forum/viewtopic.php?f=3&t=3855的名为 repl.bat 的帮助程序批处理文件,这将保留空白行并且更可靠。

@echo off
for %%a in (test*.txt) do type "%%a" | repl "\|" "," m > "%%~na.csv"
于 2013-08-18T06:15:31.117 回答