我有一个.csv文件,该文件的第一列第二行中包含以下特殊字符:
测试
我想要一个批处理脚本,该脚本将删除这些特殊字符,并且应如下所示:
我尝试了以下脚本,但是它清除了文件中的所有内容:
@echo off
for %%a in (*.csv) do @(
findrepl "^" "" < %%a > %%~na.csv
del %%a
ren %%~na.csv %%a
)
任何帮助将不胜感激。
答案 0 :(得分:0)
我同意Compo,您应该修复创建文件的过程。但是可以从现有文件中删除问题字符。
您的代码无法正常工作有两个原因。
%%~na.csv
与%%a
相同,因此当您重定向输出时,您将立即覆盖文件内容而没有任何内容,并且整个脚本会严重失败。我想在临时创建新版本时附加.new
。call findrepl
包含在另一个批处理脚本中时需要使用它。如果文件名中有空格,则应引用文件名。
使用十六进制转义序列来识别问题字符可能更可靠。
最后,使用move
代替del
和ren
更简单,更有效。
@echo off
for %%a in (*.csv) do (
call findrepl "^\xEF\xBB\xBF" "" < "%%a" > "%%a.new"
move /y "%%a.new" "%%a"
)
另一种选择是使用我的JREPL.BAT utility。它使您可以忽略临时文件问题。
从命令行:
for %F in (*.csv) do call jrepl "^\xEF\xBB\xBF" "" /f "%F" /o -
如果将命令放入批处理脚本中,当然需要将百分比翻倍。