协慌网

登录 贡献 社区

如何从 Windows 命令行获取应用程序退出代码?

我正在运行一个程序,想查看它的返回代码是什么(因为它基于不同的错误返回了不同的代码)。

我知道在 Bash 中,我可以通过运行

回声 $?

在 Windows 上使用 cmd.exe 怎么办?

答案

名为errorlevel伪环境变量存储退出代码:

echo Exit Code is %errorlevel%

另外, if命令具有特殊的语法:

if errorlevel

看看if /?有关详细信息。

@echo off
my_nify_exe.exe
if errorlevel 1 (
   echo Failure Reason Given is %errorlevel%
   exit /b %errorlevel%
)

警告:如果设置环境变量名称errorlevel ,则%errorlevel%将返回该值,而不是退出代码。使用( set errorlevel= )清除环境变量,从而允许通过%errorlevel%环境变量访问errorlevel的真实值。

测试ErrorLevel适用于控制台应用程序,但是dmihailescu暗示,如果您尝试从命令提示符运行窗口化的应用程序(例如基于 Win32 的窗口) ,则此方法将无效。一个窗口化的应用程序将在后台运行,并且控件将立即返回到命令提示符(最有可能的ErrorLevel为零,以指示该进程已成功创建 )。当窗口应用程序最终退出时,其退出状态将丢失。

但是,与其使用其他地方提到的基于控制台的 C ++ 启动器,还可以使用命令提示符下的START /WAIT命令来启动带窗口的应用程序。这将启动带窗口的应用程序,等待其退出,然后将控制权返回到命令提示符,并在ErrorLevel中设置进程的退出状态。

start /wait something.exe
echo %errorlevel%

使用内置的 ERRORLEVEL 变量:

echo %ERRORLEVEL%

但是要注意,如果应用程序定义了名为 ERRORLEVEL 的环境变量