J'essaie de créer un script pour exécuter un fichier exe à l'arrêt afin d'installer sp1. mon script va quelque chose comme (pas script de batte réelle).
If installed GOTO END
Install.exe
END:
Mon problème est que, quand il fonctionne, il lance le programme d'installation, puis termine le script car le processus de l'installateur est différent, puis poursuit en arrêtant le processus d'installation car l'ordinateur ferme et ferme le système (du moins, c'est ce que je pense ça fait.)
Y a-t-il un moyen de lui dire d'attendre que le processus qu'il a démarré se termine, puis se ferme?
windows
batch-file
executable
Kravlin
la source
la source
like start /wait install; exit
?cmd /C start /wait install
Un moyen plus court:
Également
pourrait être utilisé, mais avec plus, vous pourrez attraper une sortie de la console. Et c’est la raison pour laquelle cela fonctionne: la commande piped attend l’entrée jusqu’à ce que le fichier .exe soit terminé.
la source
<
,>
,>>
,&
,&&
,||
,|
)Appeler le fichier exe directement à partir du fichier de commandes, ou utiliser
start /wait
cela fonctionnera, mais il y a une mise en garde.Si l'exe que vous appelez crée alors un autre processus, tel que l'appel d'un autre exe, puis quitte le fichier de commandes, le traitement du fichier de commandes se poursuivra une fois que l'exe appelé est terminé, car il n'a pas connaissance des autres processus qu'il a démarrés.
Dans votre cas, il s’agit d’un véritable problème, car les installateurs extraient normalement les fichiers à partir d’une forme de conteneur compressé, qui peut être incorporé dans le fichier exe lui-même, puis déclenchent l’un des fichiers extraits et se terminent. Certains installateurs fournissent des paramètres de ligne de commande qui indiquent à l'exe d'origine de ne pas quitter l'ordinateur avant la fin de l'installation complète. Autre que cela, il n'y a pas de véritable solution à ce problème avec les fichiers de commandes seuls et prendrait une solution programmatique à résoudre.
la source
msiexec
déclenche souvent d'autres processus. :(start /wait
de tout? J'ai moi-même pensé qu'il était nécessaire d'utiliserstart /wait
pour bloquer les fichiers de commandes jusqu'à la fin de l'application à interface graphique (contrairement à une console). Mais en le testant à présent, je constate que les fichiers de commandes attendent même les applications à interface graphique. J'ai posté la question correspondante: Pourquoi l'application graphique bloque-t-elle un fichier de commandes?Voici un exemple d'utilisation de MATLAB! J'ai supposé que la configuration du chemin d'accès pour MATLAB est terminée et que l'exit MATLAB est assuré par le fichier FileName.m (ou l'utilisateur l'a spécifié en interne).
la source
J'avais le problème @John Gardeniers Avait ou avait décrit, où mon exe a appelé un autre exe et s'est terminé, donc début / attente n'a pas fonctionné. J'ai créé une "boucle while" pour vérifier si elle est en cours d'exécution, puis passer à la fin de l'opération. Les temps peuvent être modifiés pour répondre à vos besoins.
la source
Vous pouvez utiliser la commande start / wait. Cela démarre une application et attend sa fin.
Ou, si vous savez combien de temps cela prend pour s'exécuter, consultez la commande de mise en veille fournie par les outils du Kit de ressources Windows Server 2003 . Sleep.exe peut être utilisé pour mettre en pause votre lot pendant un nombre quelconque de secondes afin de permettre au programme de s'installer complètement avant que le fichier de traitement par lot ne procède à une autre installation. Certains programmes ignorent la syntaxe "start / wait", car le programme lui-même lance un autre processus. Le fichier sleep.exe est donc très utile.
la source