一个爆炸字符在Windows bat文件中意味着什么?

Ale*_*ore 2 windows batch-file

我正在尝试纠正一个使用爆炸字符的蝙蝠文件,我希望在某种形式的引用:类似的东西

set some_var=!some_var:"=\"!
Run Code Online (Sandbox Code Playgroud)

然后是

some command !some_var!
Run Code Online (Sandbox Code Playgroud)

看起来第一个是提示输入时禁用了echo,比如提示输入密码,第二个引用变量.通常,bat文件使用百分比字符,例如

%some_var%
Run Code Online (Sandbox Code Playgroud)

任何人都知道爆炸角色在蝙蝠文件中究竟做了什么?试图调试这个东西,不喜欢猜测.

jam*_*lin 6

来自cmd /?:

如果启用了延迟环境变量扩展,则可以使用感叹号在执行时替换环境变量的值.

(该cmd帮助在其他地方描述了启用延迟环境变量扩展的各种方法.)

来自set /?:

延迟环境变量扩展允许您使用不同的字符(感叹号)在执行时扩展环境变量.

环境变量替换增强如下:

%PATH:str1=str2%
Run Code Online (Sandbox Code Playgroud)

将扩展PATH环境变量,用"str2"替换扩展结果中每次出现的"str1".

set some_var=!some_var:"=\"!因此,您的情况是更新some_var以替换"字符\".