cmd 之 exit 命令
在 Windows 命令提示符(cmd)或批处理脚本中,exit /b 1:是一个用于退出当前批处理脚本(子进程)并返回指定错误码的命令。其核心作用如下:
命令解析 exit /b 1
- 退出作用域
- /b 参数表示仅退出当前批处理脚本(子进程),而不会关闭整个 cmd 解释器窗口。
- 若在脚本外直接运行 exit /b,会退出 cmd 程序(需谨慎使用)。
- 返回值设置
- 1 是自定义的退出状态码(范围 0-255),会赋值给系统变量 %errorlevel%。
- 约定: 0 表示成功,非零值(如 1)表示异常或错误。
典型应用场景
脚本错误处理
在脚本中检测到错误时终止执行,并通知调用者:
batch
if not exist "file.txt" (
echo 文件不存在,退出脚本
exit /b 1
)
嵌套脚本调用
子脚本返回状态码,父脚本通过 %errorlevel% 判断结果:
batch
call child_script.bat
if %errorlevel% equ 1 (
echo 子脚本执行失败
)
调试与流程控制
在函数或标签中使用 exit /b 提前退出,避免执行后续代码:
batch
:process_data
:: 数据为空则退出函数并返回错误码
if "%data%"=="" exit /b 1
echo 处理数据...
与相关命令对比
命令 | 作用 | 影响范围 |
---|---|---|
exit | 退出整个 cmd 解释器 | 关闭当前 cmd 窗口 |
exit /b [code] | 仅退出当前脚本,返回错误码 code | 不影响父脚本或 cmd 窗口 |
goto :eof | 跳转到脚本末尾结束执行 | 不设置错误码 |
注:直接双击运行脚本时,三者均会关闭 cmd 窗口;在手动打开的 cmd 中调用时,exit /b 和 goto :eof 不会关闭父窗口25。
注意事项
- 错误码范围
- 返回值应为 0-255 的整数,若超过 255 会自动取模(如 256 返回 0)。
- 检查返回值
- 父脚本需通过 if %errorlevel% neq 0 判断子脚本是否成功。
- 避免误用
- 在脚本中直接写 exit(不带 /b 参数)会强制结束整个 cmd 进程,可能导致意外退出。
示例验证
子脚本 child.bat:
batch
@echo off
echo 子脚本执行中...
exit /b 1
父脚本 main.bat:
batch
@echo off
call child.bat
if %errorlevel% equ 1 (
echo 子脚本返回错误码 1
) else (
echo 子脚本执行成功
)
pause
运行 main.bat 将输出:子脚本返回错误码 1