Возможно, вы захотите, чтобы команда START инициировала параллельную обработку, хотя это можно сделать через WMIC. Обратите внимание, что первый аргумент обрабатывается как заголовок окна, если он заключен в кавычки. Вот почему мой первый аргумент - пустая строка. /B
Опция запускает команду в том же окне. Удалите его, если вы хотите новое окно для каждой команды.
Нет простой встроенной пакетной команды или опции для ожидания завершения ряда параллельных процессов.
Мне нравится перенаправлять неиспользуемый дескриптор файла в файл для каждого процесса, таким образом устанавливая исключительную блокировку. Затем я могу определить, запущен ли еще процесс, пытаясь перенаправить (CALL )
(практически нулевую операцию) к тому же файлу блокировки. Если перенаправление не удается, то процесс все еще выполняется. Успех означает, что процесс завершен.
Тест должен быть выполнен для каждого из файлов блокировки в цикле опроса. Добавление задержки является хорошей идеей для предотвращения злоупотребления ресурсами в цикле опроса.
@echo off set "lock=%temp%\%~nx0.lock" start "" /b "timeout" 5 9>"%lock%.1" start "" /b "timeout" 8 9>"%lock%.2" :wait timeout 1 /nobreak >nul 2>nul (for %%F in ("%lock%.*") do 9>"%%F" (call ) && del "%%F" || goto :wait) echo OK
Если у вас есть большое количество параллельных процессов для запуска, и вы хотите ограничить количество одновременных процессов, то вас может заинтересовать https://stackoverflow.com/a/11715437/1012053