Каждая команда или приложение возвращает статус завершения, также известный, как return status или exit code.
Успешная команда или приложение возвращает 0
, в то время как неуспешное возвращает ненулевое значение, которое обычно может быть интерпретировано как код ошибки (error code).
В Linux код завершения последней команды можно получить, выполнив echo $?
.
В этой статье я покажу, как узнать код завершения последней консольной команды или приложения в Windows из командной строки (CMD) или из PowerShell.
Код Возврата Последней Команды
Напечатать True
или False
, в зависимости от того, выполнилась ли последняя команда или консольное приложение успешно либо с ошибкой:
# Windows CMD C:\> if %ErrorLevel% equ 0 (echo True) else (echo False) # Windows PowerShell PS C:\> $?
Вернуть код завершения последней команды или консольной программы:
# Windows CMD C:\> echo %ErrorLevel% # Windows PowerShell PS C:\> $LastExitCode
Код Возврата Оконного Приложения
Напечатать True
или False
, в зависимости от того, выполнилась ли последняя «оконная» программа, запущенная из консоли, успешно либо с ошибкой:
# Windows CMD C:\> start /wait app.exe C:\> if %ErrorLevel% equ 0 (echo True) else (echo False) # Windows PowerShell PS C:\> app.exe PS C:\> $?
Вернуть код завершения «оконного» приложения, запущенного из консоли:
# Windows CMD C:\> start /wait app.exe C:\> echo %ErrorLevel% # Windows PowerShell PS C:\> app.exe PS C:\> $LastExitCode
This seems good and correct. But I am seeking how to get the exitcode from a PowerShell script run from cmd.exe and the exit code from a Windows executable run from PowerShell.
C:> powershell -Nologo -NoProfile -File ‘.\ascript.ps1’
ECHO %ERRORLEVEL%
PS C:\> & ascript.bat
$?