Это то, что я обнаружил при параллельном запуске командных файлов (несколько экземпляров одного и того же bat-файла одновременно с разными входными параметрами):
Допустим, у вас есть исполняемый файл, который выполняет длинную задачу под названием LongRunningTask.exe
Если вы вызываете exe-файл непосредственно из файла bat, будет выполнен только первый вызов LongRunningTask, в то время как остальные вызовут ошибку ОС «Файл уже используется процессом»
Если вы используете эту команду:
start / B / WAIT "" "LongRunningTask.exe" "параметры"
Вы сможете запустить несколько экземпляров bat и exe, все еще ожидая завершения задачи, прежде чем bat продолжит выполнение оставшихся команд. Параметр / B позволяет избежать создания другого окна, для работы команды необходимы пустые кавычки, см. Ссылку ниже.
Обратите внимание, что если вы не используете / WAIT в начале, LongRunningTask будет выполняться в то же время, что и остальные команды в пакетном файле, поэтому это может создать проблемы, если одна из этих команд требует вывода LongRunningTask.
Возобновление:
Это не может работать параллельно:
- вызвать LongRunningTask.exe
Это будет работать параллельно и будет в порядке, если между выходными данными команды и остальной частью файла bat нет зависимости между данными:
- start / B "" "LongRunningTask.exe" "параметры"
Это будет выполняться параллельно и будет ждать завершения задачи, поэтому вы можете использовать вывод:
- start / B / WAIT "" "LongRunningTask.exe" "параметры"
Ссылка на команду запуска: Как запустить программу из командного файла, не оставляя консоль открытой после запуска программы?