Skip to content

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