24

У меня есть файл .bat в Windows, который делает три вещи

cmd1 arg1 arg2
cmd2 arg3 
cmd3 arg4 arg5 arg6

Иногда cmd1 может выйти из строя, и это нормально, я хотел бы продолжить и выполнить cmd2 и cmd3. Но моя летучая мышь останавливается на cmd1. Как я могу избежать этого?

Обновление для ясности - это не другие файлы .bat, это команды exe. Надеюсь, мне не нужно создавать дерево файлов .bat только для этого.

3 ответа3

14

Другой вариант - использовать амперстенд (&)

cmd1 & cmd2 & cmd3

Если вы используете удвоение, оно продолжается только в случае успешного завершения предыдущей команды (%ERRORLEVEL%==0)

cmd1 && cmd2 && cmd3

Если вы используете двойной канал (||), то следующая команда запускается только в том случае, если предыдущая команда завершается с кодом ошибки (%ERRORLEVEL% NEQ 0)

cmd1 || cmd2 || cmd3

9

Предположим, что cmds - это другие .bat-файлы, которые складывают команды следующим образом:

 call cmd1
 call cmd2
 call cmd3
8

Это сработало для меня:

cmd.exe /c cmd1 arg1
cmd2
...

Он использует cmd.exe для выполнения команды в новом экземпляре интерпретатора команд Windows, поэтому неудачная команда не прерывает пакетный сценарий. Флаг /c указывает интерпретатору прекратить работу, как только команда завершит выполнение.

cmd2 выполняется, даже если первая команда не выполнена. Смотри cmd /? из командной строки Windows для получения дополнительной информации.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .