本帖最后由 buyiyang 于 2023-5-22 16:50 编辑
先给一个例子,以下分别是1.bat与2.bat的内容
1.bat复制代码 2.bat复制代码 执行1.bat会发现它闪退了,实际上它只执行了"echo,第二个脚本",然后直接退出了,因为2.bat不会返回,而且bat文件尾默认有一个exit。
看看exit命令的作用:- 退出 CMD.EXE 程序(命令解释器)或当前批处理脚本。
- EXIT [/B] [exitCode]
- /B 指定要退出当前批处理脚本而不是 CMD.EXE。如果从一个批处理脚本外执行,则会退出 CMD.EXE
- exitCode 指定一个数字号码。如果指定了 /B,将 ERRORLEVEL设成那个数字。如果退出 CMD.EXE,则用那个数字设置过程退出代码。
复制代码 所以执行完2.bat后就直接退出CMD.EXE了,可以在1.bat中这样解决:- call 2.bat
- for /f %%i in ('2.bat') do @
- cmd /c 2.bat
复制代码 有时候,有需要在2.bat中显式地写上exit,这时call 2.bat也会直接退出,可以采取后面两种方法。
使用call最好是将exit改成exit /b,或者改为使用goto :eof返回call。 |