Batch - Attendre la fin d'un processus
Résolu/Fermé
joujou07
Messages postés
254
Date d'inscription
mardi 19 juin 2007
Statut
Membre
Dernière intervention
7 septembre 2009
-
12 mars 2008 à 17:24
anonyme - 10 mai 2017 à 11:33
anonyme - 10 mai 2017 à 11:33
A voir également:
- Batch attendre la fin d'une commande
- Invite de commande - Guide
- Commande terminal mac - Guide
- Fichier batch - Guide
- Batch pause 10 secondes ✓ - Forum Programmation
- Chambre 1408 explication fin - Forum Cinéma / Télé
6 réponses
W95Psp
Messages postés
95
Date d'inscription
mercredi 11 août 2010
Statut
Membre
Dernière intervention
22 décembre 2013
36
18 juin 2012 à 10:53
18 juin 2012 à 10:53
Bonjour,
Pour faire d'un processus un processus bloquant avec MS-DOS, il suffit d'utiliser la commande start de cette manière :
Pour faire d'un processus un processus bloquant avec MS-DOS, il suffit d'utiliser la commande start de cette manière :
start /wait path\file.exe
joujou07
Messages postés
254
Date d'inscription
mardi 19 juin 2007
Statut
Membre
Dernière intervention
7 septembre 2009
45
15 mars 2008 à 16:47
15 mars 2008 à 16:47
Avec start
cchristian
Messages postés
921
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
6 mars 2012
131
15 mars 2008 à 17:08
15 mars 2008 à 17:08
Bonjour,
Essaie plutôt avec un CALL, le START ne rend pas "la main" à l'appelant.
Essaie plutôt avec un CALL, le START ne rend pas "la main" à l'appelant.
joujou07
Messages postés
254
Date d'inscription
mardi 19 juin 2007
Statut
Membre
Dernière intervention
7 septembre 2009
45
>
cchristian
Messages postés
921
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
6 mars 2012
4 juin 2008 à 12:52
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
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
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
cchristian
Messages postés
921
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
6 mars 2012
131
12 mars 2008 à 18:59
12 mars 2008 à 18:59
Bonsoir,
Ton batch lance un autre batch si j'ai bien compris ?
Ce programme appelé est activé avec quelle commande CALL, START .............
Ton batch lance un autre batch si j'ai bien compris ?
Ce programme appelé est activé avec quelle commande CALL, START .............
Utilisateur anonyme
12 mars 2008 à 17:27
12 mars 2008 à 17:27
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:
@+
Si tu veux attendre un peu:
ping localhost > NUL
@+
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
joujou07
Messages postés
254
Date d'inscription
mardi 19 juin 2007
Statut
Membre
Dernière intervention
7 septembre 2009
45
15 mars 2008 à 17:25
15 mars 2008 à 17:25
ok je vais essayer
cchristian
Messages postés
921
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
6 mars 2012
131
5 juin 2008 à 00:14
5 juin 2008 à 00:14
Bonsoir,
Merci, tiens-nous informé,
Merci, tiens-nous informé,
joujou07
Messages postés
254
Date d'inscription
mardi 19 juin 2007
Statut
Membre
Dernière intervention
7 septembre 2009
45
22 juin 2008 à 18:51
22 juin 2008 à 18:51
C'était effectivement sa.
cchristian
Messages postés
921
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
6 mars 2012
131
23 juin 2008 à 14:43
23 juin 2008 à 14:43
Bonjour,
Merci pour le retour,
Merci pour le retour,
6 nov. 2013 à 19:58
beaucoups je cherchait ça depuis........................
10 mai 2017 à 11:33
vraiment