批量删除.csv文件中首次出现的特殊字符

时间:2020-03-02 08:03:16

标签: batch-file

我有一个.csv文件,该文件的第一列第二行中包含以下特殊字符:

测试

enter image description here

我想要一个批处理脚本,该脚本将删除这些特殊字符,并且应如下所示:

enter image description here

我尝试了以下脚本,但是它清除了文件中的所有内容:

@echo off
for %%a in (*.csv) do @(
   findrepl "^" "" < %%a > %%~na.csv
   del %%a
   ren %%~na.csv %%a
)

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

我同意Compo,您应该修复创建文件的过程。但是可以从现有文件中删除问题字符。

您的代码无法正常工作有两个原因。

  • %%~na.csv%%a相同,因此当您重定向输出时,您将立即覆盖文件内容而没有任何内容,并且整个脚本会严重失败。我想在临时创建新版本时附加.new
  • FINDREPL是批处理脚本,因此将call findrepl包含在另一个批处理脚本中时需要使用它。

如果文件名中有空格,则应引用文件名。

使用十六进制转义序列来识别问题字符可能更可靠。

最后,使用move代替delren更简单,更有效。

@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 -

如果将命令放入批处理脚本中,当然需要将百分比翻倍。