在我的用例中,我有一个
scriptMain.bat
调用一个 scriptSub.bat
.scriptSub.bat
中,需要启用DelayedExpansion
。因为我必须与
scriptMain.bat
和 scriptSub.bat
共享变量设置(2023 年 5 月 5 日更新:而且我不想通过调用参数引用共享设置,因为 scriptSub.bat
所做的设置数量), SETLOCAL ENABLEDELAYEDEXPANSION
命令必须在scriptMain.bat
调用scriptSub.bat
之前执行。
所以我想检查一下
scriptSub.bat
,如果DelayedExpansion
真的打开了。
我确实像这样实现了这些脚本 - 它似乎有效,但我想知道是否有更简单的解决方案。
scriptMain.bat
:
@ECHO OFF
REM scriptMain.bat for both cases:
SETLOCAL ENABLEDELAYEDEXPANSION
CALL scriptSub.bat
ENDLOCAL
REM Now without ENABLEDELAYEDEXPANSION
SETLOCAL
CALL scriptSub.bat
ENDLOCAL
scriptSub.bat
:
REM scriptSub.bat:
SET "_var1=val1" & SET "_var2=!_var1!"
IF "%_var1%" == "%_var2%" (
ECHO Delayed expansion is ON
) ELSE (
ECHO Delayed expansion is OFF
)
GOTO:EOF
输出执行
scriptMain.bat
:
Delayed expansion is ON
Delayed expansion is OFF
怎么样
@ECHO OFF
SET "_dest=somewhere"&GOTO !_dest!
:!_dest!
ECHO delayedexpansion NOT enabled
GOTO :EOF
:somewhere
ECHO delayedexpansion IS enabled
GOTO :EOF