Comment vous attendez-vous à la fin exe dans un fichier de commandes?

J'essaie de créer un script pour exécuter le fichier EXE lorsque vous avez terminé votre travail à installer. sp1. Mon script ressemble à ceci. (pas un vrai scénario de valet).

If installed GOTO END
Install.exe
END:

Mon problème est que lorsqu'il commence, il démarre le programme d'installation, puis complète le script car le programme d'installation - Ceci est un autre processus, puis complète le processus d'installation, car l'ordinateur s'éteint et désactive le système. (Au moins je pense que ça fait.)

Existe-t-il un moyen de lui dire d'attendre que le processus qu'il a lancé se termine, puis terminer?
Invité:

Catherine

Confirmation de:

Essayez de courir

START /WAIT Install.exe

Babette

Confirmation de:

Un moyen le plus court:

Install.exe|more

Également

install|rem

Il serait possible d'utiliser, bien que, avec le temps, vous pouvez prendre une conclusion de conclusion. Et c'est la raison pour laquelle il travaille - L'équipe de convoyeur attend l'entrée tout en .exe Ne sera pas terminé.

Babette

Confirmation de:

Soit appelé exe directement à partir du fichier de commande ou en utilisant

start /wait

Travaillera, mais il y a une nuance.

Si le fichier EXE appelé crée ensuite un autre processus, tel que l'appelant un autre fichier EXE, puis terminer les travaux, le fichier de commandes se poursuivra le traitement après la fin du fichier EXE appelé, car il ne connaît pas d'autres processus les exécutant.

Dans votre cas, il s'agit d'un vrai problème, car les installateurs suppriment généralement des fichiers d'une forme d'un conteneur compressé, qui peut être intégré à exe, Exécutez ensuite l'un des fichiers extraits et quittez. Certains installateurs fournissent des paramètres de ligne de commande qui disent que le fichier EXE d'origine ne s'éteint pas tant que la totalité de l'installation n'est pas terminée, de sorte que c'est ce que vous voudrez peut-être apprendre. De plus, à l'aide des fichiers de commande uniquement, il n'y a pas de moyen réel de contourner ce problème et une solution logicielle sera nécessaire pour le résoudre.

Christine

Confirmation de:

Voici un exemple d'utilisation MATLAB! J'ai suggéré que régler le chemin pour MATLAB Effectué et hors de MATLAB Fourni par fichier FileName.m (ou l'utilisateur l'a pointé à l'intérieur).

echo off
matlab -nosplash /r "FileName.m"
:loop
tasklist /fi "imagename eq MATLAB.exe" |find ":" > nul
if errorlevel 1 goto loop
exit

Giselle

Confirmation de:

J'ai eu un problème que @John Gardeniers avait ou décrit où mon exe causé un autre exe et le travail terminé alors courir / Attendre n'a pas fonctionné. J'ai créé un "cycle while», Pour vérifier si cela fonctionne, puis passez à la prochaine étape. Le temps peut être configuré en fonction de vos besoins.

TIMEOUT /T 60

SETLOCAL EnableExtensions
set EXE=MYEXETOCHECK.exe
:LOOPSTART
FOR /F %%x IN ('tasklist /NH /FI "IMAGENAME eq %EXE%"') DO IF %%x == %EXE% goto FOUND
goto FIN
:FOUND
TIMEOUT /T 30
goto LOOPSTART
:FIN

Alice

Confirmation de:

Vous pouvez utiliser la commande start / wait. Il lance la demande et attend son achèvement.

Ou, si vous savez combien de temps il faut exécuter, vous pouvez regarder la commande de sommeil fournie par
http://www.microsoft.com/downl ... %3Den
. Sleep.exe Vous pouvez utiliser pour suspendre l'exécution du package pendant un certain nombre de secondes afin que le programme puisse être complètement installé avant que le fichier de package continue d'installer autre chose. Il y a des programmes qui ignorent la syntaxe "Fonctionnement / attente", Depuis que le programme lui-même lance un autre processus, alors sleep.exe Très utile.

Catherine

Confirmation de:

Comme dans le cas du fichier @FreeSoftwareServers, J'avais besoin d'attendre le lancement d'un programme qui n'exécutait pas le fichier de commande. Attendez ensuite quelques secondes pour démarrer le programme qui se connecte au programme que je vérifie. Si vous souhaitez que le fichier dépasse le temps d'attente après avoir vérifié un certain nombre de fois, vous pouvez utiliser le compteur dans le cycle pour limiter le nombre de cycles qu'il répète.

SETLOCAL EnableExtensions
set EXE=MYEXETOCHECK.exe
:LOOPSTART
FOR /F %%x IN ('tasklist /NH /FI "IMAGENAME eq %EXE%"') DO IF %%x == %EXE% goto FOUND
TIMEOUT /T 3
goto LOOPSTART
:FOUND
TIMEOUT /T 15
START HOOKINGPROGRAM.exe

Première TIMEOUT Détermine la fréquence à laquelle le cycle sera répété à la recherche du programme. Il peut être changé en fonction de vos besoins.

Pour répondre aux questions, connectez-vous ou registre