如何检测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
相关产品推荐
相关产品推荐

