Création
d'entreprise
Posez votre question Signaler

Batch - Attendre la fin d'un processus [Résolu]

joujou07 257Messages postés 19 juin 2007Date d'inscription - Dernière réponse le 20 mai 2011 à 17:01
Bonjour,
je bosse actuellement sur un batch, au début de celui-ci un programme se lance et mon batch se met en pause, mais j'aimerais que le batch continue dès que le processus lancé se ferme.
Quelq'un a-t-il la solution ?
PS : J'ai Windows XP
Lire la suite 

Batch - Attendre la fin d'un processus »

11 réponses
Réponse
+2
moins plus
Avec start
joujou07- 4 juin 2008 à 12:52
Franchement, c'est la deuxième fois que tu m'aides, tu es un ze BOSS en MS-DOS toi ! Merci
Tartempion - 18 mai 2011 à 16:11
Hmm, plutôt efficace, mais j'ai un cas que ça ne résout pas : comment savoir quand un Installshield s'est terminé ??
ce dernier crée un processus clone, donc, call ne suffit pas :(

J'ai essayé avec différents paramètres d'IS (dont /deleter et /clone_wait ou /wait_clone), ça n'a rien changé :(
Tartempion : le retour - 20 mai 2011 à 17:01
Bon, bah j'ai trouvé une solution qui marche pour mon cas, avec un VBscript (.vbs)

Voila mon code, si la mise en page ne le ruine pas, il suffit de le copier/coller pour le faire tourner.

En gros, dans mon cas, j'attend tout simplement que deux processus (ceux d'un Installshield) soient terminés avant de continuer l'exécution.

Le code que je présente ici est juste un script d'attente, qui est appelé, en amont, par un batch qui lance divers autres batchs via des call.
i.e. :
call batch1.bat
call batch2.bat
call wait.vbs
call batch3.bat
etc...



'Script qui attend au tournant la fin du process Installshield pour permettre aux installations de se continuer.
'J ai toujours vu les deux mêmes processus sur les machines : _INS5576._MP & _ISDEL.EXE
'Si pour une raison quelconque, les processus créés ont d'autres noms, il faudra lancer les étape manuellement,
'ou trouver un moyen plus fiable pour automatiser les installations.



wscript.sleep 5000 ' On attend un peu pour être sûr que l'install s'est lancée

set svc=getobject("winmgmts:root\cimv2")
sQuery1="select * from win32_process where name='_INS5576._MP'" ' Nom du processus dont on veut attendre la fin
sQuery2="select * from win32_process where name='_ISDEL.EXE'" ' Nom du processus dont on veut attendre la fin
set cproc1=svc.execquery(sQuery1)
set cproc2=svc.execquery(sQuery2)
iniproc=cproc1.count + cproc2.count 'Nombre de processus ayant le nom recherché
Do While iniproc > 0 'Boucle tant qu'il en reste au moins un de lancé
wscript.sleep 1333 'Attente relativement passive
set svc=getobject("winmgmts:root\cimv2")
set cproc1=svc.execquery(sQuery1)
set cproc2=svc.execquery(sQuery2)
iniproc=cproc1.count + cproc2.count
Loop
set cproc1=nothing 'Libération de la mémoire ?? de variables système ??
set cproc2=nothing
set svc=nothing

'Set WshShell = WScript.CreateObject("WScript.Shell")
'WshShell.Run "%windir%\notepad.exe", 1, True 'lancement d'un programme une fois que ceux attendus sont terminés
'Set WshShell = Nothing
Ajouter un commentaire
Réponse
+1
moins plus
Bonsoir,

Ton batch lance un autre batch si j'ai bien compris ?

Ce programme appelé est activé avec quelle commande CALL, START .............
Ajouter un commentaire
Réponse
+0
moins plus
ok je vais essayer
cchristian- 5 juin 2008 à 00:14
Bonsoir,

Merci, tiens-nous informé,
Ajouter un commentaire
Réponse
+0
moins plus
C'était effectivement sa.
cchristian- 23 juin 2008 à 14:43
Bonjour,

Merci pour le retour,
Ajouter un commentaire
Réponse
-2
moins plus
MS-DOS est un système mono-tâche (une commande à la fois) donc pas besoin de mettre un code pour attendre la fin du processus, ça se fait déjà.

Si tu veux attendre un peu:
ping localhost > NUL

@+
Ajouter un commentaire
Ce document intitulé « Batch - Attendre la fin d'un processus » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?