O comando Pause é executado fora de ordem ao executar "start cmd /c" várias vezes

O comando Pause é executado fora de ordem ao executar "start cmd /c" várias vezes

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 pausecomando é executado antes que todas as linhas acima dele no script tenham sido executadas. Preciso usar @start /b cmd /cpara 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 Pauseocorrer depois de todos Helloterem sido impressos, acontece no meio:

insira a descrição da imagem aqui

Responder1

O comando startinicia 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 pauseaparece no meio deles é apenas uma questão de tempo.

Então para resolver seu problema você pode esperar que eles terminem /waitou 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

informação relacionada