我有一个很多使用SETLOCAL ENABLEDELAYEDEXPANSION
命令的脚本,因此我以这种方式启动脚本(减少头痛)。但是,它不允许您使用!
字符而不转义它的每个实例(我想为错误记录部分= D创建一长串!
并且我不知道我想逃离他们每一个人。
有没有办法暂时退出SETLOCAL
,然后重新输入,将所有以前创建的变量保留在原始SETLOCAL
内?
例如:
SETLOCAL ENABLEDELAYEDEXPANSION
set var=HELLO
ECHO %var%
ENDLOCAL
SETLOCAL ENABLEDELAYEDEXPANSION
ECHO %var%
第二个ECHO
不会为您提供之前的var
编辑:^
不允许您逃离!
内的SETLOCAL ENABLEDELAYEDEXPANSION
答案 0 :(得分:1)
setlocal DisableDelayedExpansion
set var=Value! with! many! Bangs!
setlocal EnableDelayedExpansion
echo !var!
答案 1 :(得分:1)
你可以像Aacini那样嵌套它
或者您可以使用返回技术或使用!
^^!
Setlocal EnableDelayedExpansion
echo 1^^!^^!^^!^^!^^!^^!^^!
REM *** Or use a self removing quote
echo !="! 2^!^!^!^!^!^!
Setlocal DisableDelayedExpansion
echo 3 !!!!!!!!
set var=Hello
(
endlocal
rem Bring the value behind the endlocal barrier
set var=%var%
)
echo var is still there, %var%
返回技术也可用于感叹号,但后来有点复杂 它可以在Make an environment variable survive ENDLOCAL
找到