Почему эхо не меняет%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 показывало уровень ошибки, чтобы я мог снова сделать паузу и снова обновить журнал в случае сбоя.

Другие вопросы по тегам