Как в пакетном файле проверить, есть ли команда
start "" javaw -jar %~p0/example.jar
удался или возникла ошибка?
Я хочу использовать инструкции if/else для эхо-вывода этой информации.
Как в пакетном файле проверить, есть ли команда
start "" javaw -jar %~p0/example.jar
удался или возникла ошибка?
Я хочу использовать инструкции if/else для эхо-вывода этой информации.
Вы можете использовать
if errorlevel 1 echo Unsuccessful
в некоторых случаях. Это зависит от последней команды, возвращающей правильный код выхода. Вы не сможете сказать, что что-то не так, если ваша программа возвращается нормально, даже если было ненормальное условие.
Вероятно, это не работает с start
, так как это запустит новое окно, но для ответа на ваш вопрос:
Если команда возвращает уровень ошибки, вы можете проверить следующие способы:
Определенный уровень ошибок
commandhere
if %errorlevel%==131 echo do something
В случае ошибки
commandhere || echo what to do if error level ISN'T 0
В случае отсутствия ошибки
commandhere && echo what to do if error level IS 0
Если он не возвращает уровень ошибки, но дает результат, вы можете поймать его в переменной и определить по выходному примеру (обратите внимание, что токены и делимы являются просто примерами и, скорее всего, не сработают с любыми специальными символами)
По завершении полного вывода
for /f "tokens=* delims=" %%a in ('somecommand') do set output=%%a
if %output%==whateveritwouldsayinerror echo error
Или вы можете просто искать одну фразу на выходе, например, слово Error
Проверка на строку
commandhere | find "Error" || echo There was no error!
commandhere | find "Error" && echo There was an error!
И вы могли бы даже смешаться (просто не забывайте бежать |
с помощью ^|
, если в инструкции for
)
Надеюсь, что это поможет.
Большинство команд/программ возвращают 0 при успехе и другое значение, называемое errorlevel
, чтобы сигнализировать об ошибке.
Вы можете проверить это в своем пакете, например:
call <THE_COMMAND_HERE>
if %ERRORLEVEL% == 0 goto :next
echo "Errors encountered during execution. Exited with status: %errorlevel%"
goto :endofscript
:next
echo "Doing the next thing"
:endofscript
echo "Script complete"
Добра, мне было трудно найти ответ на этот вопрос... Вот он:
cd thisDoesntExist
if %errorlevel% == 0 (
echo Oh, I guess it does
echo Huh.
)
Я не знаю, будет ли javaw писать переменной% errorlevel%, но это возможно.
echo %errorlevel%
после того, как вы запустите его непосредственно, чтобы увидеть.
Кроме этого, вы можете вывести вывод javaw в файл, а затем использовать find
, чтобы узнать, какие результаты были. Не зная выхода из этого, я не могу вам помочь.