批处理文件是否可以捕获它正在调用的命令的退出代码?

Mat*_*att 21 batch-file exit-code

基本上,假设我有一个调用myapp1.exe和myapp1.exe的批处理文件,退出代码为1.批处理文件是否可以捕获此信息,并强制批处理文件以相同的退出代码退出或执行其他逻辑?

Joe*_*oey 31

@echo off
rem ...
set errorlevel=
MyApp1.exe
exit /b %errorlevel%
Run Code Online (Sandbox Code Playgroud)

将是明确的变体.

  • 看来至少 PowerShell v3 可以返回否定的退出代码:`powershell 'exit -5'; $LASTEXITCODE` 为我产生 `-5`。 (2认同)

Nat*_*ook 5

接受的答案是正确的,但如果您使用的call是调用另一个批处理脚本,而第二个批处理脚本正在使用SetLocal,则可能需要使用解析技巧来完成此操作。如果您遇到此问题,请在您的之前添加以下代码exit b

ENDLOCAL&set myvariable=%myvariable%
Run Code Online (Sandbox Code Playgroud)

现在,myvariable调用上下文可以使用 的值,您可以在另一个脚本中看到该值。

参考资料:
https : //stackoverflow.com/a/16167938/89590
http://www.borngeek.com/2008/05/22/exiting-batch-file-contexts/