■前言
bat调用bat代码学习
■发现的问题
代码一运行,就直接退出,屏幕一闪而过。(期待命令行窗口停住,因为代码里面有pause)
■原因
被调用的代码中,运行了不带任何参数的exit,从而导致命令行窗口直接退出
■解决
被调用的bat程序退出时,带上参数 /b
■代码
调用源
@echo off
cd /d %~dp0
rem call method.bat 0
call method.bat 0
set flag0=%ERRORLEVEL%
echo %flag0%
call method.bat 1
set flag1=%ERRORLEVEL%
echo %flag1%
call method.bat 2
set flag2=%ERRORLEVEL%
echo %flag2%
pause
被调用代码
(使用第九行被注释的代码时,出现了上面记述的问题,直接推出了。。。
最初的写,第九行代码的目的是,想看一下,
如果不指定什么返回值,调用源的ERRORLEVEL是如何显示的。
结果发现,不能这么写。)
@echo off
set param=%1
if %param%==1 goto ERROREXIT1
if %param%==2 goto ERROREXIT2
rem exit
exit /b 99
:ERROREXIT1
exit /b 1
exit
:ERROREXIT2
exit /b 2
exit
■运行效果
99
1
2
请按任意键继续. . .
■帮助文档
退出 CMD.EXE 程序(命令解释器)或当前批处理脚本。
EXIT [/B] [exitCode]
/B 指定要退出当前批处理脚本而不是 CMD.EXE。如果从一个
批处理脚本外执行,则会退出 CMD.EXE
exitCode 指定一个数字号码。如果指定了 /B,将 ERRORLEVEL
设成那个数字。如果退出 CMD.EXE,则用那个数字设置
过程退出代码。