如何测试 SETLOCAL ENABLEDELAYEDEXPANSION 是否激活

问题描述 投票:0回答:1

在我的用例中,我有一个

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
windows batch-file
1个回答
0
投票

怎么样

@ECHO OFF
SET "_dest=somewhere"&GOTO !_dest!

:!_dest!
ECHO delayedexpansion NOT enabled
GOTO :EOF

:somewhere
ECHO delayedexpansion IS enabled
GOTO :EOF
© www.soinside.com 2019 - 2024. All rights reserved.