Exit 与 Goto :eof 在批处理中的区别【转】

  1. 在 CMD 命令提示符窗口直接运行:

    1.) 运行 Goto :eof 后,CMD 返回并将等待下一命令。 

    2.) 运行 Exit 后,CMD 将直接关闭并返回到曾启动 Cmd.exe 的程序或返回到“资源管理器”。

    3.) 运行 Exit /b 后,CMD 将直接关闭并返回到曾启动 Cmd.exe 的程序或返回到“资源管理器”。

    Exit

    退出当前批处理脚本或 Cmd.exe 程序(即,命令解释程序)并返回到曾启动 Cmd.exe 的程序或返回到“程序管理器”。

    语法

    exit [/b] [ExitCode]

    参数

    /b
    退出当前批处理脚本。
    ExitCode
    指定数字编号。
    /?
    在命令提示符显示帮助。

    注释

    • 如果在批处理脚本之外使用 /b,就会退出 Cmd.exe。
    • 如果使用 /b,Cmd.exe 将 ERRORLEVEL 设置为指定的 ExitCode。如果退出 Cmd.exe,Cmd.exe 则使用指定的 ExitCode 设置进程退出代码。
  2. 在批处理的最后一个执行语句里使用:

    1.) 使用 Goto :eof ,双击该批处理,运行完成后 CMD 窗口关闭;在 CMD 中运行此批处理,运行完成后 CMD 返回并将等待下一命令。

    @echo off

    pause

    goto :eof

    2.) 使用 Exit ,双击该批处理,运行完成后 CMD 窗口关闭;在 CMD 中运行此批处理,运行完成后 CMD 将直接关闭并返回到曾启动 Cmd.exe 的程序或返回到“资源管理器”。

    @echo off

    pause

    exit

    3.) 使用 Exit /b ,双击该批处理,运行完成后 CMD 窗口关闭;在 CMD 中运行此批处理,运行完成后 CMD 返回并将等待下一命令。

    @echo off

    pause

    exit /b

  3. 在 Call 的子标签中:

    1.)

    @echo off
    for /l %%i in (1 1 3) do call :han%%i
    pause&goto :eof
    :han1
    echo 执行了:han1
    goto :eof
    echo 多余1
    :han2
    echo 执行了:han2
    goto :eof
    echo 多余2
    :han3
    echo 执行了:han3
    goto :eof
    echo 多余3

    使用 Goto :eof ,将返回到 call 命令,for 也将继续循环迭代。

    2.)  

    @echo off
    for /l %%i in (1 1 3) do call :han%%i
    pause&exit
    :han1
    echo 执行了:han1
    exit
    echo 多余1
    :han2
    echo 执行了:han2
    exit
    echo 多余2
    :han3
    echo 执行了:han3
    exit
    echo 多余3

    使用 Exit ,批处理将被直接退出,不能返回到 Call ,for 循环迭代被终止。

    3.)  

    @echo off
    for /l %%i in (1 1 3) do call :han%%i
    pause&exit /b
    :han1
    echo 执行了:han1
    exit /b
    echo 多余1
    :han2
    echo 执行了:han2
    exit /b
    echo 多余2
    :han3
    echo 执行了:han3
    exit /b
    echo 多余3

    使用 Exit /b ,将返回到 call 命令,for 也将继续循环迭代。

  4. 特例:

    有一些情况下,在 CMD 窗口下运行 Exit 并不是退出 CMD ,例如:

    在 Ftp 子系统中,运行 ! ,从 ftp 子系统临时退出到命令提示符下,这时运行 Exit ,将返回到 ftp 子系统。 

    C:WINDOWSsystem32命令提示符本文转自http://blog.sina.com.cn/hygxchxz

    Microsoft Windows XP [版本 5.1 2600]
    <C> 版权所有 1985-2001 Microsoft Corp.

    本文转自http://blog.sina.com.cn/hygxchxz

    C:Documents and Settings寒夜孤星>Ftp
    ftp> !

    Microsoft Windows XP [版本 5.1 2600]
    <C> 版权所有 1985-2001 Microsoft Corp.

    本文转自http://blog.sina.com.cn/hygxchxz

    C:Documents and Settings寒夜孤星>Exit
    ftp> Quit

    本文转自http://blog.sina.com.cn/hygxchxz

    C:Documents and Settings寒夜孤星>

    本文转自http://blog.sina.com.cn/hygxchxz

    智能 ABC 半:

    在命令提示符下嵌套新实例 CMD.exe 时,运行 Exit 关闭嵌套的命令行解释器,而不是父命令行解释器。

    C:WINDOWSsystem32命令提示符本文转自http://blog.sina.com.cn/hygxchxz

    Microsoft Windows XP [版本 5.1 2600]
    <C> 版权所有 1985-2001 Microsoft Corp.

    本文转自http://blog.sina.com.cn/hygxchxz

    C:Documents and Settings寒夜孤星>CMD

    Microsoft Windows XP [版本 5.1 2600]
    <C> 版权所有 1985-2001 Microsoft Corp.

    本文转自http://blog.sina.com.cn/hygxchxz

    C:Documents and Settings寒夜孤星>Exit

    本文转自http://blog.sina.com.cn/hygxchxz

    C:Documents and Settings寒夜孤星>

    本文转自http://blog.sina.com.cn/hygxchxz

    智能 ABC 半:

  5. 关于 goto : eof 的详解:

    功能:可以在不定义标签的情况下将控制传送到当前批处理脚本文件的末端。

    注释: 必须满足以下两个条件。 1.) 启用了命令扩展(即默认状态)。

    2.) 使用 goto 和 :EOF 标签时,必须在标签前插入冒号。

  6. 关于 exit /b [ExitCode] 的详解:

    功能: Cmd.exe 将 ERRORLEVEL 设置为指定的 ExitCode。如果退出 Cmd.exe,Cmd.exe 则使用指定的 ExitCode 设置进程退出代码。

    示例: 必将下面的批处理保存到C盘,并命名为han.bat。

    @echo off
    echo 命令
    exit /b 30194447
     

    然后,我们在 CMD 命令提示符下进行操作:

    C:WINDOWSsystem32命令提示符本文转自http://blog.sina.com.cn/hygxchxz

    Microsoft Windows XP [版本 5.1 2600]
    <C> 版权所有 1985-2001 Microsoft Corp.

    本文转自http://blog.sina.com.cn/hygxchxz

    C:Documents and Settings寒夜孤星>C:han.bat

    命令

    本文转自http://blog.sina.com.cn/hygxchxz

    C:Documents and Settings寒夜孤星>Echo %errorlevel%
    30194447

    本文转自http://blog.sina.com.cn/hygxchxz

    C:Documents and Settings寒夜孤星>

    本文转自http://blog.sina.com.cn/hygxchxz

    智能 ABC 半:

 
转自
Exit 与 Goto :eof 在批处理中的区别_寒夜孤星_新浪博客
http://blog.sina.com.cn/s/blog_51a4af870100e0st.html
原文地址:https://www.cnblogs.com/paul8339/p/11928605.html