刚接触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”但仍然是相同)。
任何帮助都会很棒。 谢谢 !
答案 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"