Ваше первоначальное понимание верно, операторы &&
и ||
отвечают на последнюю выполненную команду (или операцию)
Следующее утверждение на исходной странице , на которую вы ссылались было неправильно .
Используйте скобки для проверки успешности нескольких команд:
(Dir C:\Test1 & Dir C:\Test2) || Echo One or more of the commands failed.
Выше будет толькоОтобразите сообщение об ошибке, если 2-й DIR не удался.
Тест можно исправить, используя &&
вместо &
, но это простой результат логики, а не какая-то дополнительная функция.Кроме того, код замыкает накоротко - если первая команда DIR не выполнена, вторая не будет выполнена.
(Dir C:\Test1 && Dir C:\Test2) || echo One of the DIR commands failed.
И скобки не нужны.Следующее дает точно такой же результат
Dir C:\Test1 && Dir C:\Test2 || echo One of the DIR commands failed.
В моем первом предложении я сказал, что &&
и ||
могут отвечать на операции, потому что они реагируют на такие операции, как перенаправление.
Следующее сообщение ECHO выдаст пользовательское сообщение об ошибке в случае сбоя перенаправления или сбоя DIR.Обратите внимание, что перенаправление происходит перед выполнением команды.Если перенаправление завершится неудачно, команда никогда не будет выполнена:
dir c:\test >x:\output.log || echo Redirection or dir failed
Примечание
Содержание указанной страницы было исправлено с момента публикации вопросов и ответов: -)