Você provavelmente desejará que o comando START inicie o processamento paralelo, embora isso possa ser feito via WMIC. Observe que o primeiro argumento é tratado como um título de janela se for citado. É por isso que meu primeiro argumento é uma string vazia. A opção /B
executa o comando na mesma janela. Remova-o se você quiser uma nova janela para cada comando.
Não há comando ou opção em lote nativo simples para aguardar a conclusão de uma série de processos paralelos.
Eu gosto de redirecionar um identificador de arquivo não usado para um arquivo para cada processo, estabelecendo assim um bloqueio exclusivo. Em seguida, posso detectar se um processo ainda está em execução, tentando redirecionar (CALL )
(efetivamente uma operação nula) para o mesmo arquivo de bloqueio. Se o redirecionamento falhar, o processo ainda estará em execução. Sucesso indica que o processo terminou.
O teste deve ser feito em cada um dos arquivos de bloqueio em um loop de pesquisa. Adicionar um atraso é uma boa ideia para evitar que o loop de polling abuse de recursos.
@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
Se você tem um grande número de processos paralelos para executar, e você quer limitar o número de processos simultâneos, então você pode estar interessado em link