Использование || двойная труба внутри START CMD - PullRequest
0 голосов
/ 18 февраля 2020

Похоже на

CMD /C Do.cmd || goto :error

Я пытаюсь использовать двойной канал как часть команды в операторе start, но мне не удается правильно вложить его. Т.е. оператор "on-error" выполняется только в случае сбоя самой команды start (т.е. как часть скрипта вызывающей стороны). Но я хочу, чтобы запущенный подпроцесс запускал его при сбое основного do.cmd.

Вот что я пытаюсь запустить:

( 
      start „parallelproc1“ cmd /c do.cmd || echo 1 > pperror.log
      start „parallelproc2“ cmd /c do.cmd || echo 1 > pperror.log
    ) | pause
    if exist pperror.log goto :error
    Continue.cmd

По сути, я хочу только продолжить, если не удалось выполнить ни один из do.cmd в параллельном c. Могу ли я не использовать || внутреннее начало?

1 Ответ

1 голос
/ 18 февраля 2020

Вы должны указать синтаксическому анализатору, как «группировать» части командной строки:

start "parallelproc1" cmd /c "do.cmd || echo 1 > pperror.log"

См. cmd /?, особенно часть, начинающуюся с:

Если задано / C или / K i, то остаток командной строки после переключателя обрабатывается как командная строка, ...

Еще один способ сообщить парсеру, что передаются сомнительные символы как | и > для подпроцесса - это экранировать их:

start "parallelproc1" cmd /c do.cmd ^|^| echo 1 ^> pperror.log

(лично я предпочитаю первый, но в некоторых особых случаях могут быть причины использовать второй)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...