我有三个变量:string,search,replace。我希望用%替换%替换%string%中的%search%。替换批处理脚本中的子字符串
这个工程,但需要硬性字符。
SET修改=%字符串:早上=晚上%
这似乎是答案的论坛,但不起作用。它只是将整行存储在%修改%
SET modified =!string:%search%=%replace%!
我有三个变量:string,search,replace。我希望用%替换%替换%string%中的%search%。替换批处理脚本中的子字符串
这个工程,但需要硬性字符。
SET修改=%字符串:早上=晚上%
这似乎是答案的论坛,但不起作用。它只是将整行存储在%修改%
SET modified =!string:%search%=%replace%!
!
格式正在执行延迟扩展 - %
变量立即被扩展,但!
变量只有在需要时才会扩展。我相信只能在批处理文件中工作,所以如果您直接在命令行上进行实验,则不会像运行批处理文件一样获得相同的行为。
确保使用!
符号,这样才使在批处理文件延迟扩展:
SETLOCAL ENABLEDELAYEDEXPANSION
SET string=This morning
SET search=morning
SET replace=evening
SET modified=!string:%search%=%replace%!
ECHO %modified%
这将呼应This evening
。
谢谢。启用延迟扩展是我没有做的。 – srrvnn 2013-03-11 04:27:13
只有使用延迟变量扩展时,该语法才有效。在脚本的顶部使用setlocal enabledelayedexpansion,或者使用cmd.exe/V:ON调用脚本。 – 2013-03-11 02:57:42