我有两个批处理文件,task.bat
和runtask.bat
. runtask.bat
调用task.bat
和我想将退出runtask.bat
代码task.bat
放入变量中。怎么可能做到这一点?
任务.bat:
@echo off
set errorlevel=1
运行任务.bat
...
CMD /C task.bat
set taskexitcode=????
我有两个批处理文件,task.bat
和runtask.bat
. runtask.bat
调用task.bat
和我想将退出runtask.bat
代码task.bat
放入变量中。怎么可能做到这一点?
任务.bat:
@echo off
set errorlevel=1
运行任务.bat
...
CMD /C task.bat
set taskexitcode=????
换个CMD /C
就行call
。
任务.bat:
@echo off
set errorlevel=15
运行任务.bat
call task.bat
set taskexitcode=%errorlevel%
echo %taskexitcode%
输出
15
我在 Teamcity 管道中有一个批处理脚本,在它的子脚本使用代码 1 退出后它没有退出。
为了解决这个问题,我IF %ERRORLEVEL% NEQ 0 EXIT 1
在子脚本调用之后添加了这个字符串。
主脚本.bat
...some code
call child-script.bat
IF %ERRORLEVEL% NEQ 0 EXIT 1
...some code
子脚本调用后,退出结果保存到%ERRORLEVEL%
. 如果它确实以错误退出,则该值将不等于 0。所以我们检查这一点,如果是这种情况,我们以代码 1(错误)退出。
接受的答案是正确的,但如果您正在使用call
调用另一个批处理脚本,并且第二个批处理脚本正在使用SetLocal
,您可能需要使用解析技巧来完成此操作。如果您遇到这种情况,请在您的之前添加以下代码exit b
:
ENDLOCAL&set myvariable=%myvariable%
现在 的值myvariable
可用于调用上下文,您可以在其他脚本中看到该值。
参考资料:
https ://stackoverflow.com/a/16167938/89590
http://www.borngeek.com/2008/05/22/exiting-batch-file-contexts/