我有三个变量:字符串、搜索、替换。我希望用 %replace% 替换 %string% 中的 %search%。
这可行,但需要硬字符。
SET 修改=%string:早上=晚上%
这似乎是论坛中的答案,但不起作用。它只是将整行存储在 %modified%
SET modified=!string:%search%=%replace%!
我有三个变量:字符串、搜索、替换。我希望用 %replace% 替换 %string% 中的 %search%。
这可行,但需要硬字符。
SET 修改=%string:早上=晚上%
这似乎是论坛中的答案,但不起作用。它只是将整行存储在 %modified%
SET modified=!string:%search%=%replace%!
!
格式进行延迟扩展——变量立即扩展,%
但!
变量仅在需要时才扩展。我相信这只适用于批处理文件,因此如果您直接在命令行中进行试验,您将不会获得与运行批处理文件相同的行为。
!
在使用符号之前,请确保在批处理文件中启用延迟扩展,如下所示:
SETLOCAL ENABLEDELAYEDEXPANSION
SET string=This morning
SET search=morning
SET replace=evening
SET modified=!string:%search%=%replace%!
ECHO %modified%
ENDLOCAL
这将回显This evening
。