![O comando Pause é executado fora de ordem ao executar "start cmd /c" várias vezes](https://rvso.com/image/1592546/O%20comando%20Pause%20%C3%A9%20executado%20fora%20de%20ordem%20ao%20executar%20%22start%20cmd%20%2Fc%22%20v%C3%A1rias%20vezes.png)
Eu tenho um script assim:
@start /b cmd /c net stop "Service"
@start /b cmd /c net stop "Service"
@start /b cmd /c net stop "Service"
@start /b cmd /c net stop "Service"
@start /b cmd /c net stop "Service"
pause
No entanto, o pause
comando é executado antes que todas as linhas acima dele no script tenham sido executadas. Preciso usar @start /b cmd /c
para que não seja necessário esperar o "Parando Serviço..." após cada atendimento (cerca de 100) de tempo. Existe alguma maneira de dizer ao cmd para esperar até que todos os @start /b cmd /c net stop "Service"
comandos sejam concluídos e depois executar a pausa?
Para ver do que estou falando, execute este arquivo em lote:
@start /b cmd /c echo Hello
@start /b cmd /c echo Hello
@start /b cmd /c echo Hello
@start /b cmd /c echo Hello
@start /b cmd /c echo Hello
@start /b cmd /c echo Hello
pause
Em vez de Pause
ocorrer depois de todos Hello
terem sido impressos, acontece no meio:
Responder1
O comando start
inicia uma aplicação em seu próprio contexto, além do que seu console atual está fazendo, é por isso que quando terminar ele retornará a saída, assim que seu terminal atual terminar o que está fazendo. É por isso que mesmo que você envie todo esse comando de início, sua pausa não está esperando que todos eles terminem. É apenas esperar o tempo suficiente para iniciar os processos. É por isso que seu pause
aparece no meio deles é apenas uma questão de tempo.
Então para resolver seu problema você pode esperar que eles terminem /wait
ou fazer uma chamada para um segundo script em lote, desta forma você pode esperar por alguns comandos e não por outros, se preferir:
Aguarde técnica pelo seu script
@start /wait /b cmd /c echo Hello
@start /wait /b cmd /c echo Hello
@start /wait /b cmd /c echo Hello
@start /wait /b cmd /c echo Hello
@start /wait /b cmd /c echo Hello
@start /wait /b cmd /c echo Hello
pause
Técnica com script lançador
@echo off
title Laucher
:: This scripts don't need to be waited
start /b cmd /c 'script1.bat'
:: This script needs to be waited
start /wait /b cmd /c 'script2.bat'
Roteiro1
@echo off
title Script to run without waiting
SomeProcessThatDoesn'tNeedsToBeWaited
Roteiro2
@echo off
title Script to run to be waited
SomeProcessThatNeedsToBeWaited
saúde