Вы должны указать синтаксическому анализатору, как «группировать» части командной строки:
start "parallelproc1" cmd /c "do.cmd || echo 1 > pperror.log"
См. cmd /?
, особенно часть, начинающуюся с:
Если задано / C или / K i, то остаток командной строки после переключателя обрабатывается как командная строка, ...
Еще один способ сообщить парсеру, что передаются сомнительные символы как |
и >
для подпроцесса - это экранировать их:
start "parallelproc1" cmd /c do.cmd ^|^| echo 1 ^> pperror.log
(лично я предпочитаю первый, но в некоторых особых случаях могут быть причины использовать второй)