exit 命令
exit 命令用于终止当前正在运行的 CMD.exe 命令解释器(窗口)。

基本语法
exit [/B] [exitCode]
参数说明
/B:可选参数,表示退出当前批处理脚本或批处理文件,而不是关闭整个 CMD 窗口,这是在.bat文件内部最常用的参数。exitCode:可选参数,指定一个介于0到255之间的数字,作为脚本的退出代码,这个代码可以被其他程序或脚本用来判断当前脚本的执行是成功还是失败。- 按照惯例,
0表示成功,非0表示失败。
- 按照惯例,
使用场景
在脚本内部中途退出(推荐)
这是最常见的用法,当满足某个条件时,提前终止脚本的执行。
@echo off
echo 脚本开始...
REM 检查一个名为 "config.txt" 的文件是否存在
if not exist "config.txt" (
echo 错误:未找到配置文件 "config.txt"。
echo 脚本将立即终止。
exit /B 1 <-- 使用 /B 退出脚本,并返回错误代码 1
)
echo 配置文件已找到,继续执行...
echo 脚本成功完成。
exit /B 0 <-- 正常退出,并返回成功代码 0
关闭 CMD 窗口
当你希望脚本执行完毕后,连同 CMD 窗口一起关闭时,可以在脚本的最后使用不带 /B 的 exit。

@echo off echo 这个脚本即将执行完毕... echo 3秒后窗口将关闭。 timeout /t 3 /nobreak > nul exit <-- 关闭整个 CMD 窗口
从命令行直接退出窗口
你也可以直接在 CMD 窗口中输入 exit 来关闭它。
goto 命令
goto 命令通过跳转到脚本中的一个标签(label)来改变脚本的执行流程,它可以用来模拟“退出”一个代码块,但它并不会真正终止脚本,除非跳转到的标签是脚本的末尾。
基本语法
goto labelName
标签的定义:labelName

使用场景
通常用于错误处理或提前跳过一段不必要的代码。
@echo off
echo 脚本开始...
REM 假设某个条件不满足
set "condition=false"
if "%condition%"=="false" (
echo 条件不满足,跳过主要执行逻辑。
goto EndScript
)
REM 这部分代码在条件满足时才会执行
echo 正在执行主要逻辑...
:EndScript
echo 脚本执行结束。
在这个例子中,goto EndScript 并没有“结束”脚本,而是让脚本跳过中间的代码,直接执行 EndScript 标签后面的内容。EndScript 标签是脚本的最后一行,那么效果上等同于提前结束了脚本的主体部分。
call 命令与 EOF
call 命令通常用于调用另一个批处理脚本,当它调用一个脚本文件时,执行完该脚本后会返回到原处继续执行。call 也可以用来调用脚本内部的一个标签。
当 call 一个名为 EOF(End Of File)的标签时,它会终止当前批处理脚本的执行,并返回到调用它的地方(如果是从另一个脚本调用的话)。
使用场景
这是一种非常优雅的退出方式,尤其在脚本函数(通过 label 模拟)中。
@echo off echo 主脚本开始... REM 调用一个函数/子程序 call :MySubroutine echo 从子程序返回,继续执行主脚本。 echo 主脚本结束。 exit /B :MySubroutine echo 你现在在子程序中。 REM 如果某个条件满足,提前从子程序返回 exit /B echo 这行代码不会被执行。 goto :eof <-- 也可以使用 goto :eof 来退出子程序,但 call :EOF 更标准
在这个例子中,call :MySubroutine 执行 MySubroutine 标签下的代码,直到遇到 exit /B 或 goto :eof,然后返回到 call 命令的下一行继续执行。
总结与对比
| 命令 | 主要用途 | 是否关闭窗口 | 退出代码 | 推荐场景 |
|---|---|---|---|---|
exit /B |
从脚本内部退出 | 否 | 是 (exitCode) |
脚本中途终止、错误处理、正常结束,这是 .bat 文件中最常用、最标准的退出方式。 |
exit |
关闭 CMD 窗口 | 是 | 是 (exitCode) |
脚本执行完毕后,希望整个控制台窗口一起关闭。 |
goto :EOF |
从子程序/标签返回 | 否 | 否 | 模拟函数返回,优雅地退出一个代码块或子程序。 |
Ctrl + C |
用户强制中断 | 是 | 否 | 用户手动中断正在运行的脚本。 |
核心建议
- 如果你想在
.bat脚本的任何地方终止其执行,请使用exit /B [exitCode]。- 成功退出:
exit /B 0 - 失败退出:
exit /B 1
- 成功退出:
- 如果你想在脚本运行完后关闭 CMD 窗口,在脚本的最后一行使用
exit。 - 如果你在使用类似函数的结构(通过
label),并想从函数中返回,使用exit /B或goto :eof。call :EOF是更符合函数式编程思想的写法。
