Почему эхо не меняет%ERRORLEVEL%?
%ERRORLEVEL%
содержит код состояния ранее выполненной команды. Если команда выполнена успешно, код будет равен 0, иначе это будет что-то еще. Итак, рассмотрим следующее:
> cd foo #there is no foo
The system cannot find the path specified. #expected
> echo %ERRORLEVEL%
1 #expected
> echo %ERRORLEVEL%
1 #unexpected
Почему не второй echo
возврате 0
? Я ожидаю, что, поскольку первое эхо завершено успешно, %ERRORLEVEL%
будет изменен на 0
а второй echo
будет печатать 0
,
2 ответа
Это потому, что только куча команд возвращает ERRORLEVEL
, как кто-то сказал, вот список: https://stackoverflow.com/questions/34968009/which-cmd-exe-internal-commands-clear-the-errorlevel-to-0-upon-success/34968021
Я не понимаю почему ECHO
вернет ERRORLEVEL, так как теперь есть ошибки.
Да, ЭХО может выйти из строя. Если у вас несколько компьютеров, обновляющих один файл журнала
echo something >> \\someserver\somepath\some.log
тогда команда ECHO может довольно часто давать сбой. Я использовал:
set /a rand=%random% %%59 + 1
ping 127.0.0.1 -n %rand% >NUL
попытаться разделить компьютеры, но это не всегда работает, и есть компьютеры, которые никогда не обновляют файл журнала. Мне бы хотелось, чтобы ECHO показывало уровень ошибки, чтобы я мог снова сделать паузу и снова обновить журнал в случае сбоя.