CMD批处理中子程序调用者如何获取其退出码?
CMD批处理子程序退出码判断解决方案
修改后的完整代码
CALL :SUB IF %ERRORLEVEL% EQU 300 ( ECHO Hi ) ELSE ( ECHO Bye ) EXIT /B :SUB EXIT /B 300
关键说明
- 替代
%RESULT%的正确变量是%ERRORLEVEL%:CMD中通过EXIT /B <数值>返回子程序退出码时,该数值会自动存入%ERRORLEVEL%环境变量,调用子程序后直接读取这个变量就能获取返回结果。 - 需要纠正的细节:
- 原主脚本末尾的
EXIT会直接关闭CMD窗口,建议改为EXIT /B,这样仅退出当前批处理脚本,保留命令行窗口方便查看输出内容。 - 如果你的脚本包含嵌套括号、循环等复杂逻辑,建议开启延迟扩展功能,改用
!ERRORLEVEL!读取变量,避免因CMD变量预扩展特性导致的判断错误。示例代码如下:
- 原主脚本末尾的
SETLOCAL EnableDelayedExpansion CALL :SUB IF !ERRORLEVEL! EQU 300 ( ECHO Hi ) ELSE ( ECHO Bye ) EXIT /B :SUB EXIT /B 300
内容的提问来源于stack exchange,提问作者ShieldOfSalvation
相关产品推荐
相关产品推荐

