我有两个批处理文件,task.bat
和runtask.bat
。 runtask.bat
调用task.bat
,我希望runtask.bat
将task.bat
的退出代码变为变量。这怎么能做到?一个批处理文件如何获取另一个批处理文件的退出代码?
task.bat:
@echo off
set errorlevel=1
runtask.bat
...
CMD /C task.bat
set taskexitcode=????
我有两个批处理文件,task.bat
和runtask.bat
。 runtask.bat
调用task.bat
,我希望runtask.bat
将task.bat
的退出代码变为变量。这怎么能做到?一个批处理文件如何获取另一个批处理文件的退出代码?
task.bat:
@echo off
set errorlevel=1
runtask.bat
...
CMD /C task.bat
set taskexitcode=????
只是交换CMD /C
为call
。
task.bat:
@echo off
set errorlevel=15
runtask.bat
call task.bat
set taskexitcode=%errorlevel%
echo %taskexitcode%
输出
15
接受的答案是正确的,但如果你正在使用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/
工作就像一个魅力,谢谢。它还允许在'task.bat'中设置变量并读入'runtask.bat'。非常感谢! – James
太好了,别担心。我实际上并不知道变量,不错:) –
exit命令有一个'/ B'开关,用于设置批处理脚本的退出代码。 –