11

我有两个批处理文件,task.batruntask.bat. runtask.bat调用task.bat和我想将退出runtask.bat代码task.bat放入变量中。怎么可能做到这一点?

任务.bat:

@echo off
set errorlevel=1

运行任务.bat

...
CMD /C task.bat
set taskexitcode=????
4

3 回答 3

13

换个CMD /C就行call

任务.bat:

@echo off
set errorlevel=15

运行任务.bat

call task.bat
set taskexitcode=%errorlevel%
echo %taskexitcode%

输出

15
于 2013-01-11T13:19:14.010 回答
3

我在 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(错误)退出。

于 2020-04-17T20:52:19.190 回答
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/

于 2014-04-29T00:31:25.633 回答