使用批处理更改包含文件中符号的文本

时间:2012-02-03 21:00:16

标签: file text batch-file replace

我实际上是在尝试替换文本文件中的部分字符串。

如果我的旧文件包含此文本

12345qwert91202030000000

我想将'120203'更改为'120204'。这是我的代码:

setlocal enabledelayedexpansion
if exist c:\myfile.txt (set b=c:\myfile.txt) ELSE GOTO LOGO

for /f "tokens= 1" %%c in (%b%) do (set line=%%c)

Set NEWdate=120204

ECHO %line:~0,11%%NEWDate%%line:~17,7% > %b%

这很好用。现在,如果我的旧文件包含以下文本

12345q&ert91202030000000

请注意符号'&',我的代码无效,因为它将其作为代码。

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

在这种情况下,您应该使用延迟扩展,因为扩展百分比会因特殊字符而失败,但延迟扩展无法识别它们。

只需用感叹号更改百分比,就可以在之前启用延迟扩展。

ECHO !line:~0,11!!NEWDate!!line:~17,7! > %b%