O programa em lote não está funcionando como deveria!

O programa em lote não está funcionando como deveria!

Eu criei um script em lote (veja na íntegra aqui) para iniciar primeiro alguns serviços e depois um aplicativo. Depois que o aplicativo for concluído, o lote deverá fazê-lo, GOTO somewheremas estará aguardando a saída do programa para continuar.

Cabeçalho para iniciar o aplicativo e prosseguir:

:vmSTARTAPP
    "C:\Program Files (x86)\VMware\VMware Workstation\vmware.exe"
    IF NOT %BACK%==NULL GOTO %BACK%
    GOTO STARTAPPCONT

Este cabeçalho é chamado de outro cabeçalho:

:STARTAPP
    cls
    echo Starting Application
    GOTO %BATCH%

%BATCH%contém o nome do próximo cabeçalho - no caso acima, vmSTARTAPP.

Se eu executá-lo em uma nova janela do prompt de comando, ele funcionará bem, mas não neste lote.

O que estou fazendo de errado?

PS Não encaminhe esta questão para a minha pergunta anterior. Este é um caso completamente diferente.

Responder1

Você poderia tentar substituir suas linhas que mostram

:vmSTARTAPP
    "C:\Program Files (x86)\VMware\VMware Workstation\vmware.exe"

com

:vmSTARTAPP
    start "Starting VMWare" /B "C:\Program Files (x86)\VMware\VMware Workstation\vmware.exe"

Presumo que você queira iniciar o VMWare silenciosamente e continuar sem parar e isso deveria, em teoria, fazer isso.

O startcomando instrui o DOS a executar o comando que você está passando para ele (neste caso "C:\Program Files (x86)\VMware\VMware Workstation\vmware.exe") e por padrão não espera pelo comando que você passa retornar e, em vez disso, executa-o em um processo separado.

Por padrão, cada linha que você possui em um arquivo em lote é executada sequencialmente e aguarda a execução e o retorno de cada linha antes de passar para a próxima linha. O startcomando contorna isso iniciando o programa que você passa em um processo separado (janela DOS) e assim seu arquivo em lote encontra esta linha, executa-o normalmente, vê que o startcomando retornou (depois de criar um novo processo para executar seu comando in) e seu arquivo em lote continua como se nada inesperado tivesse acontecido.

O "Starting VMWare"título é simplesmente isso, um título, a janela do DOS recém-criada teria esse título se não fosse pelo /Bargumento que lhe diz para não mostrar a nova janela do DOS. O título é meio necessário, mas meio opcional, e ocasionalmente tive momentos WTF em scripts sem ele, mas esses momentos são mais exceção do que regra.

Você pode encontrar um pouco mais de informações sobre o comando Iniciar emhttp://ss64.com/nt/start.html

informação relacionada