Обычно я нахожу условные команды конкатенации гораздо удобнее, чем ERRORLEVEL.
yourCommand && (
echo yourCommand was successful
) || (
echo yourCommand failed
)
Существует одно осложнение, о котором вы должны знать. Ветвь ошибки будет срабатывать, если последняя команда в ветке успеха вызывает ошибку.
yourCommand && (
someCommandThatMayFail
) || (
echo This will fire if yourCommand or someCommandThatMayFail raises an error
)
Исправление состоит в том, чтобы вставить безопасную команду, которая, как гарантируется, будет успешной в конце ветви успеха. Мне нравится использовать (call)
, который не делает ничего, кроме установки ERRORLEVEL 0. Существует следствие (call)
, что не делает ничего, кроме установленного ERRORLEVEL 1.
yourCommand && (
someCommandThatMayFail
(call)
) || (
echo This can only fire if yourCommand raises an error
)
См Foolproof way to check for nonzero (error) return code in windows batch file примеров тонкостей необходимо при использовании ERRORLEVEL в обнаруживать ошибки.
Да, если бы я сделал это с помощью силовой оболочки, есть рубящий взлом, сценарий партии не успевает потратить время. – bplus
Без сомнения, PowerShell - превосходный язык. Но ERRORLEVEL - это не единственный ресурс для партии - см. [Мой ответ] (http://stackoverflow.com/a/17085933/1012053). – dbenham