使用变量替换批处理文件子串

del*_*ium 9 variables replace substring batch-file

在使用变量时,我无法让这个批处理文件进行子串替换.特别当!原创!指定变量; 如果它是一个文字字符串,它工作正常.但是,这不适合我的使用.

setlocal ENABLEDELAYEDEXPANSION
set original=chair
set replacement=table
set str="jump over the chair"
set str=%str:!original!=!replacement!%
Run Code Online (Sandbox Code Playgroud)

非常感谢您的帮助.

azh*_*rei 15

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

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

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


dbe*_*ham 4

您已经取消了扩展顺序。

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

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

set str=!str:%original%=%replacement%!
Run Code Online (Sandbox Code Playgroud)