使用变量时,我无法让此批处理文件执行子字符串替换。具体当 !original! 指定变量;如果它是一个文字字符串,它可以正常工作。但是,这不适用于我的使用。
setlocal ENABLEDELAYEDEXPANSION
set original=chair
set replacement=table
set str="jump over the chair"
set str=%str:!original!=!replacement!%
非常感谢您的帮助。
使用变量时,我无法让此批处理文件执行子字符串替换。具体当 !original! 指定变量;如果它是一个文字字符串,它可以正常工作。但是,这不适用于我的使用。
setlocal ENABLEDELAYEDEXPANSION
set original=chair
set replacement=table
set str="jump over the chair"
set str=%str:!original!=!replacement!%
非常感谢您的帮助。
如果您使用call
,您可以在不需要 的情况下执行此操作setlocal enabledelayedexpansion
,如下所示:
call set str=%%str:%original%=%replacement%%%
注意:这首先被解析为call set str=%str:chair=table%
你的扩张顺序颠倒了。
正常(百分比)扩展发生在解析时(第 1 次)
延迟(感叹号)扩展发生在运行时(第 2 次)
必须先扩展搜索和替换项,然后才能进行搜索和替换。所以你要:
set str=!str:%original%=%replacement%!