如何在txt格式的报告中查找逗号的出现,并使用批处理脚本将其替换为空格

时间:2015-02-06 08:35:00

标签: batch-file

我有很多报告在D:\ folder \ data \ data1中采用txt格式。逗号的出现是不可预测的。在txt文件中找到逗号时我需要用空格替换。所以我必须为多个文本文件执行此操作

例如:报告中的数据将类似于

abacndl      123455      300,90.55     aldfankas    400,123,455.900
adsmnfnka    12345774    134,789.9     aeraermk     456,987,87.000

并且明智地继续

有人可以帮我为这个场景做一个批处理脚本

1 个答案:

答案 0 :(得分:2)

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET "sourcedir=U:\sourcedir\t w o"
PUSHD "%sourcedir%"
FOR %%a IN (*.txt) DO (
 FOR /f "usebackq delims=" %%b IN ("%%a") DO (
  SET "line=%%b"
  >>"%%~na.XTX" echo(!line:,= !
 )
)
rem delete existing text files and renam new version to .txt
del *.txt
ren *.xtx *.txt
popd

GOTO :EOF

您需要更改sourcedir的设置以适合您的具体情况。

  • 切换到目标目录
  • 为每个.txt文件,将每行读取到%%b,将其保存在line进行处理,然后输出line处理以替换每个, 空间

为新输出文件选择的名称为%%~na.xtx - 即具有新扩展名xtx的原始名称。这样,您可以在使用前轻松检查新格式。我假设在运行之前没有.xtx个文件。


我不理解上面del / ren的问题;它对我来说很完美。

这是另一个版本 - 只有重命名代码不同。

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET "sourcedir=U:\sourcedir\t w o"
PUSHD "%sourcedir%"
FOR %%a IN (*.txt) DO (
 FOR /f "usebackq delims=" %%b IN ("%%a") DO (
  SET "line=%%b"
  >>"%%~na.XTX" echo(!line:,= !
 )
)
rem rename new version to .txt - alternative codeline
FOR %%a IN (*.xtx) DO (MOVE /y "%%~na.XTX" "%%~na.txt") >nul
popd

GOTO :EOF