Executando vários processos em segundo plano simultâneos, em seguida, espere que todos terminem, no Windows

11

Alguém sabe se existe script cmd que faz isso e / ou uma ferramenta de linha de comando pronta para o trabalho?

    
por Sergio 26.03.2012 / 18:10

5 respostas

5

Crie os três arquivos em lote abaixo. Main.bat lança 1.bat e 2.bat

1.bat e 2.bat gravam arquivos temporários para quais cheques main.bat. Enquanto 1.bat e 2.bat estão funcionando, main.bat informa que o processamento ainda está ocorrendo. Quando você pressiona enter na janela aberta 1.bat ou 2.bat, o arquivo temporário é excluído e o programa é encerrado. Isso simula o processamento interrompido para esse arquivo .bat. Se você fizer isso para 1 e 2.bat, main.bat relatará a você que o processamento foi concluído para esses processos. Você pode fazer com que 1.bat e 2.bat façam o que quiser, contanto que você limpe o arquivo temporário quando terminar. Neste ponto, o main.bat pode fazer o que você quiser.

1.bat

echo %time% > 1.tmp
pause
del 1.tmp
exit 

2.bat

echo %time% > 2.tmp
pause
del 2.tmp
exit

main.bat

@echo off
start "1" 1.bat
start "2" 2.bat
    @ping -n 1 127.0.0.1 > nul
:loop
@echo Processing......
if not exist *.tmp goto :next
    @ping -n 5 127.0.0.1 > nul
goto loop
:next
@echo Done Processing!
    
por 26.03.2012 / 21:50
1

A única maneira de fazer isso é iniciar arquivos em lote separados (consulte start /? ) que executam a tarefa individual e gravam um arquivo de texto após a conclusão. Em seguida, você verifica periodicamente se os arquivos de texto foram criados.

    
por 26.03.2012 / 19:16
0

Você pode observar o cmdlet Powershell Start-Job. Deve permitir que você faça isso. Mais aqui Powershell é o shell de escolha da Microsoft. É muito mais poderoso que os scripts cmd e bem o investimento do seu tempo

    
por 26.03.2012 / 18:59
0

Simples o suficiente, desde que os processos não precisem de entrada ou saída padrão. Na linha de comando ou em um arquivo em lotes:

process1 | process2 | process3 | process4

Isso executará todos os quatro processos simultaneamente e não retornará até que todos tenham saído. (Possível exceção: se um processo fecha explicitamente a saída padrão, ele pode ser tratado como se tivesse saído. Mas isso é incomum, muito poucos processos fazem isso.)

Não sei exatamente quantos processos você pode iniciar simultaneamente dessa maneira. Eu tentei até dez.

    
por 27.03.2012 / 00:37
0

Ou você pode usar isto: link

Eu fiz, funciona, mas às vezes acontece que o PID do processo finalizado é imediatamente reutilizado por outro processo do Windows que acabou de começar, e torna a detecção do final do processo perigosa / errada.

    
por 17.01.2014 / 18:24