You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何检测SETLOCAL ENABLEDELAYEDEXPANSION是否已激活?

批处理脚本中检测延迟扩展(DelayedExpansion)状态的实现

我的使用场景:scriptMain.bat调用scriptSub.bat,被调用的scriptSub.bat要求必须启用DelayedExpansion。由于需要在两个脚本间共享变量设置(2023年5月5日更新:因scriptSub.bat生成的设置数量较多,不希望通过调用参数传递设置),必须在scriptMain.bat中先执行SETLOCAL ENABLEDELAYEDEXPANSION,再调用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 代码(2023年5月8日更新:根据@Compo的回答简化)

REM scriptSub.bat:
IF "!!" == "" (
  ECHO Delayed expansion is ON
)  ELSE (
  ECHO Delayed expansion is OFF
)
GOTO:EOF

执行scriptMain.bat的输出

Delayed expansion is ON
Delayed expansion is OFF

内容的提问来源于stack exchange,提问作者Markus Hoffrogge

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 20:04:53