在批处理脚本中替换子字符串

时间:2013-03-11 00:18:00

标签: batch-file

我有三个变量:string,search,replace。我希望将%search%中的%search%替换为%replace%。

这可行,但需要硬字​​符。

SET modified =%string:morning = evening%

这似乎是论坛中的答案,但不起作用。它只是将整行保存在%modified%

SET modified =!string:%search%=%replace%!

1 个答案:

答案 0 :(得分:1)

!格式正在进行延迟扩展 - %变量会立即展开,但!变量只有在需要时才会展开。我相信只能在批处理文件中运行,因此如果您直接在命令行进行实验,则无法获得与运行批处理文件相同的行为。

确保在使用!表示法之前在批处理文件中启用延迟扩展,如下所示:

SETLOCAL ENABLEDELAYEDEXPANSION
SET string=This morning
SET search=morning
SET replace=evening
SET modified=!string:%search%=%replace%!
ECHO %modified%
ENDLOCAL

这将回显This evening