本帖最后由 Hello123World 于 2011-10-12 16:12 编辑
【原】[一日一教学]批处理系列帖子索引 http://bbs.bathome.net/thread-2576-1-1.html
【续】[一日一教学]批处理系列帖子索引 http://bbs.bathome.net/thread-13798-1-1.html
帮助信息:- 退出 CMD.EXE 程序(命令解释器)或当前批处理脚本。
-
- EXIT [/B] [exitCode]
-
- /B 指定要退出当前批处理脚本而不是 CMD.EXE。如果从一个
- 批处理脚本外执行,则会退出 CMD.EXE
-
- exitCode 指定一个数字号码。如果指定了 /B,将 ERRORLEVEL
- 设成那个数字。如果退出 CMD.EXE,则用那个数字设置
- 过程退出代码。
复制代码 命令概括:
exit,意为“退出”;
/b,全英文batch(不确定);
code,意为“代码”,exitcode就是“退出码”;
参数详解:
1.退出命令解释器;
脚本的运行都依赖解释器,批处理依赖cmd.exe,vbs依赖wscript.exe,没有解释器,脚本都不能运行。- @echo off
- echo hello
- exit
- echo world
- pause
复制代码 exit 是退出解释器,造成world不显示,pause不执行。
2.退出当前批处理脚本;
乍一看,觉得和第一没什么区别,但事实上区别很大。
试着运行下面的代码,比较其中差别:
保存两个批处理,分别命名test、a;运行test.bat;
test.bat- @echo off
- echo 这是test.bat
- echo 调用a.bat之前的状态
- call a.bat
- echo 调用a.bat之后的状态
- echo %errorlevel%
- pause
复制代码 a.bat- @echo off
- echo.
- echo 这是a.BAT文件
- echo.
- exit /b
复制代码 现在把a.bat的内容替换成:- @echo off
- echo.
- echo 这是a.BAT文件
- echo.
- exit /b 12
复制代码 再次运行test.bat
如果你细心的话,就会发现errorlevel的值变了,默认是0,/b 12之后就是12了。
没错,EXIT [/B] [exitCode]中[exitCode]就是用来设置,退出码errorlevel的值。
那么/b又有什么用呢?
正如那句话所说,要知道一件事物的重要性,那就看看没有这件事物时世界会是怎样。
继续将a.bat的内容替换:- @echo off
- echo.
- echo 这是a.BAT文件
- echo.
- exit
复制代码 再次运行test.bat
结果,黑框一闪而过,因为这三条语句都没有执行,- echo 调用a.bat之后的状态
- echo %errorlevel%
- pause
复制代码 因此exit /b是用来退出批处理脚本的,而exit是用来退出解释器的;
可以这么理解,exit /b 退出子进程,而exit则退出父进程,子进程结束不影响父进程的执行,但是父进程结束那就是彻底的结束。
(当然,如果只有一个进程,exit /b也是能结束父进程的)。
扩展阅读:
无。 |