2 votes

Le programme de traitement par lots ne fonctionne pas comme il le devrait !

J'ai créé un lot script ( voir dans son intégralité ici ) pour lancer d'abord certains services et ensuite une application. Une fois l'application terminée, le lot est censé GOTO somewhere mais il attend que le programme se termine, pour continuer plus loin.

En-tête pour démarrer l'application et poursuivre :

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

Cet en-tête est appelé à partir d'un autre en-tête :

:STARTAPP
    cls
    echo Starting Application
    GOTO %BATCH%

%BATCH% contient le nom de l'en-tête suivant - dans le cas ci-dessus, vmSTARTAPP .

Si je l'exécute à partir d'une nouvelle fenêtre d'invite de commande, il fonctionne bien, mais pas dans ce lot.

Qu'est-ce que je fais de mal ?

P.S. Ne renvoyez pas cette question à ma question précédente. Il s'agit d'un cas complètement différent.

1voto

Ana cleto Points 11

Pourriez-vous essayer de remplacer vos lignes qui indiquent

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

avec

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

Je suppose que vous voulez lancer VMWare en silence et continuer sans vous arrêter, ce qui devrait, en théorie, être possible.

El start demande au DOS d'exécuter la commande que vous lui transmettez (dans ce cas, " C:\Program Fichiers (x86) \VMware\VMware Poste de travail \vmware.exe ") et, par défaut, n'attend pas le retour de la commande que vous lui avez passée, mais l'exécute dans un processus distinct.

Par défaut, chaque ligne d'un fichier batch est exécutée séquentiellement et attend que chaque ligne soit exécutée et retournée avant de passer à la ligne suivante. Le site start contourne ce problème en lançant le programme que vous lui passez dans un processus séparé (fenêtre DOS). Ainsi, votre fichier batch rencontre cette ligne, l'exécute comme il le ferait normalement, voit que la commande start est revenu (après avoir créé un nouveau processus pour exécuter votre commande) et votre fichier batch continue comme si rien d'inattendu ne s'était produit.

El "Starting VMWare" Le titre est simplement cela, un titre, la fenêtre DOS nouvellement créée aurait ce titre si ce n'était pas pour les /B qui lui indique de ne pas afficher la nouvelle fenêtre DOS. Le titre est en quelque sorte nécessaire mais en quelque sorte optionnel et j'ai eu un moment WTF occasionnel dans scripts sans lui, mais ces fois sont plus l'exception que la règle.

Vous trouverez un peu plus d'informations sur la commande Start à l'adresse suivante http://ss64.com/nt/start.html

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X