Eu tenho um arquivo de lote simples que chama outros arquivos de lote, parece com isso:
start /b run_part1.bat
start /b run_part2.bat
start /b run_part3.bat
start /b run_part4.bat
run_last.bat // fires immediately, how to make this line wait until above finishes?
Com o /b os primeiros 4 arquivos serão executados simultaneamente. Tudo terminará dentro de 1,5 horas.
Eu preciso de outro script para fazer uma limpeza depois que todos os quatro arquivos terminarem. No entanto, o run_last.bat não espera pelos primeiros 4 arquivos, ele é chamado ao mesmo tempo com os primeiros 4.
Existe uma maneira de alcançá-lo?
Obrigada.
Pare de usar o prompt de comando antiquado e use o Powershell. Você pode usar o módulo ThreadJob , conforme descrito nesta excelente resposta no SO :
você pode usar CALL, ele chama um arquivo de banho de outro arquivo de banho
para mais informações consulte https://www.robvanderwoude.com/call.php
Não há nada embutido nos arquivos em lote para lidar com isso.
Você pode modificar os 4 arquivos em lote para criar um arquivo de sinalização quando eles terminarem. Em seguida, no arquivo de lote principal, execute um loop procurando os arquivos sinalizadores com uma chamada para
timeout /t 10
no loop para retardar as verificações.