9

使用变量时,我无法让此批处理文件执行子字符串替换。具体当 !original! 指定变量;如果它是一个文字字符串,它可以正常工作。但是,这不适用于我的使用。

setlocal ENABLEDELAYEDEXPANSION
set original=chair
set replacement=table
set str="jump over the chair"
set str=%str:!original!=!replacement!%

非常感谢您的帮助。

4

2 回答 2

16

如果您使用call,您可以在不需要 的情况下执行此操作setlocal enabledelayedexpansion,如下所示:

call set str=%%str:%original%=%replacement%%%

注意:这首先被解析为call set str=%str:chair=table%

于 2012-08-10T01:19:51.540 回答
4

你的扩张顺序颠倒了。

正常(百分比)扩展发生在解析时(第 1 次)
延迟(感叹号)扩展发生在运行时(第 2 次)

必须先扩展搜索和替换项,然后才能进行搜索和替换。所以你要:

set str=!str:%original%=%replacement%!
于 2012-08-09T23:50:08.387 回答