DOS批处理文件只处理第一个文件

时间:2013-08-18 05:38:49

标签: batch-file dos

刚接触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”但仍然是相同)。

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

1 个答案:

答案 0 :(得分: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"