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

2

Eu criei um script em lote ( veja na íntegra aqui ) para iniciar alguns serviços primeiro e depois um aplicativo. Após a conclusão da aplicação, o lote é suposto para GOTO somewhere , mas está aguardando a saída do programa para continuar.

Cabeçalho para iniciar o aplicativo e continuar:

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

Esse 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 o executar a partir de uma nova janela do Prompt de Comando, ele funcionará bem, mas não neste lote.

O que estou fazendo de errado?

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

    
por Starx 27.07.2011 / 04:30

1 resposta

1

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"

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

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

Por padrão, cada linha que você tem em um arquivo de lote é executada sequencialmente e espera que todas as linhas sejam executadas e retornadas antes de passar para a próxima linha. O comando start contorna isso iniciando o programa que você passa em um processo separado (janela do DOS) e, assim, seu arquivo em lote encontra essa linha, como normalmente faria, vê que o comando start retornou (depois criando um novo processo para executar seu comando) e seu arquivo de lote continua como se nada de inesperado tivesse ocorrido.

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

Você pode encontrar mais informações sobre o comando Iniciar no link

    
por 27.07.2011 / 09:51