Alguém sabe se existe um script cmd que faz isso e / ou uma ferramenta de linha de comando pronta para o trabalho?
14
Alguém sabe se existe um script cmd que faz isso e / ou uma ferramenta de linha de comando pronta para o trabalho?
Respostas:
Crie os três arquivos em lotes abaixo. Main.bat lança 1.bat e 2.bat
1.bat e 2.bat gravam arquivos temporários para os quais o main.bat verifica. Enquanto o 1.bat e o 2.bat estão funcionando, o 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 a parada do processamento para esse arquivo .bat. Se você fizer isso para 1 e 2.bat, o main.bat informará que o processamento foi concluído para esses processos. Você pode fazer com que 1.bat e 2.bat façam o que quiser, desde que limpe o arquivo temporário quando terminar. Nesse ponto, o main.bat também pode fazer o que você quiser.
1.bat
2.bat
main.bat
fonte
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:
Isso executará todos os quatro processos simultaneamente e não retornará até que todos tenham saído. (Possível exceção: se um processo fechar explicitamente a saída padrão, ele poderá 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.
fonte
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.fonte
Você pode olhar para o cmdlet Powershell Start-Job. Deve permitir que você faça isso. Mais aqui O Powershell é o shell preferido da Microsoft. É muito mais poderoso que os scripts cmd e bem o investimento do seu tempo
fonte
Ou você pode usar isso: http://www.out-web.net/?p=167
Eu fiz isso, funciona, no entanto, às vezes acontece que o PID do processo finalizado é reutilizado imediatamente por outro processo do Windows que acabou de iniciar e torna a detecção do final do seu processo arriscada / incorreta.
fonte
Eu também estava procurando uma tarefa semelhante. O objetivo era executar vários comandos em paralelo e extrair a saída (stdout e erro) de todos os processos paralelos. Aguarde todos os processos paralelos concluírem e executem outro comando. A seguir está um código de amostra para o arquivo BAT, que pode ser executado no CMD:
( start "" /B cmd /c ping localhost -n 6 ^>nul timeout /t 5 /nobreak start "" /B /D "C:\users\username\Desktop" cmd /c dir ^> dr.txt ^2^>^&^1 start "" /B cmd /c ping localhost -n 11 ^>nul timeout /t 10 /nobreak ) | pause Echo waited timeout /t 12 /nobreak
Todas as instruções internas
()
são executadas primeiro, aguarde a conclusão e as duas últimas linhas são executadas. Todos os comandos iniciados comstart
são executados simultaneamente.Esses links são úteis: /programming//a/43762349/9689416 e https://ss64.com/nt/start.html
fonte