【发布时间】:2016-09-15 14:14:25
【问题描述】:
我必须使用 Windows 命令/批处理脚本替换文本文件 (InputFile.txt) 中的字符串。我找到了以下脚本 (replace.cmd),但它没有给我准确的结果。
InputFile.txt:
1111 aaaa
2222 bbbb
$cc = 3333
我用来将$cc = 3333 替换为cc = 4444 的批处理脚本(replace.cmd)是:
@echo OFF
setlocal enabledelayedexpansion
set "search=$cc = 3333"
set "replace=cc = 4444"
set "textfile=InputFile.txt"
set "newfile=OutputFile.txt"
(for /f "delims=" %%i in (%textfile%) do (
set "line=%%i"
setlocal enabledelayedexpansion
set "line=!line:%search%=%replace%!"
echo(!line!
endlocal
))>"%newfile%"
运行代码后我得到的输出是:
1111 aaaa
2222 bbbb
3333=cc = 4444= 3333
应该是这样的:
1111 aaaa
2222 bbbb
cc = 4444
【问题讨论】:
-
您是真的使用“MS-DOS”还是指的是Windows中的命令行?
-
您正在使用的脚本并非旨在使用包含 = 字符的搜索字符串。要测试脚本,将搜索字符串替换为
set search=2222 bbbb并将替换为set replace=$%RANDOM% -
你会用Vbscript吗?
-
一点点,简单的搜索将对此大有帮助。怎么样? stackoverflow.com/questions/60034/…
-
你想总是替换整行,还是部分字符串?还有别的:你不应该为批处理文件使用名称
replace,因为还有一个这样命名的命令...
标签: windows batch-file cmd