[VBS] Script en pause pendant execution DOS

Résolu
xav3601 Messages postés 3289 Date d'inscription   Statut Membre Dernière intervention   -  
xav3601 Messages postés 3289 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je souhaiterais mettre l'execution de mon script VBS en pause pendant la durée d'execution d'une commande DOS.

Merci pour vos réponse

13 réponses

blux Messages postés 27120 Date d'inscription   Statut Modérateur Dernière intervention   3 359
 
Je viens de regarder un vieux script chez moi, où j'avais eu le même problème.

Essaie voir de mettre
oShell.run strCommande,2,True
sans toucher à rien (avec ta commande d'origine).
3
xav3601 Messages postés 3289 Date d'inscription   Statut Membre Dernière intervention   311
 
Voila ma ligne de commande :

Shell "pingpong.bat", vbHide

avec le start /wait devant ca ne marche pas non plus :/
1
blux Messages postés 27120 Date d'inscription   Statut Modérateur Dernière intervention   3 359
 
ca ne marche pas non plus
Et plus précisément ?

C'est quoi que tu tapes avec le start /wait ?
0
blux Messages postés 27120 Date d'inscription   Statut Modérateur Dernière intervention   3 359
 
Salut,

tu peux essayer de lancer ta commande avec un start /wait, ton script devrait attendre...
0
xav3601 Messages postés 3289 Date d'inscription   Statut Membre Dernière intervention   311
 
Merci de ta reponse d'abord!
concernant mon code je lance la commande de cette maniere:


set oShell = CreateObject("WScript.Shell")
oShell.run strCommande

A quelle endroit dois je inserer le /wait pour effectuer le test?
merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
blux Messages postés 27120 Date d'inscription   Statut Modérateur Dernière intervention   3 359
 
Dans strCommande, sans doute :

strCommande = "start /wait ta_commande"
0
xav3601 Messages postés 3289 Date d'inscription   Statut Membre Dernière intervention   311
 
Merci pour ta reponse!
Je viens de tester mais ca ne marche pas :/
0
blux Messages postés 27120 Date d'inscription   Statut Modérateur Dernière intervention   3 359
 
ca ne marche pas
Tu peux être plus précis ?
0
xav3601 Messages postés 3289 Date d'inscription   Statut Membre Dernière intervention   311
 
Erreur:le fichier spécifié est introuvable
Code: 80070002

Voila l'erreur au moment de lancer la commande
0
xav3601 Messages postés 3289 Date d'inscription   Statut Membre Dernière intervention   311
 
J'essaye de suite mais en effet ca devrais marcher!
puisque c'est l'attribut true qui va faire attendre je viens de le voir sur un autre site :)

en tout cas merci pour tes reponses ;)

Edit:
Ca marche!
j'ai juste remplacé le 2 par un 1 pour avoir la fenetre a l'ecran car je dois y taper un mdp dedans.
Merci beaucoup.
0
xav3601 Messages postés 3289 Date d'inscription   Statut Membre Dernière intervention   311
 
Si je peux me permettre, je souhaiterais faire la meme chose....
en vba avec la fonction shell :)
0
blux Messages postés 27120 Date d'inscription   Statut Modérateur Dernière intervention   3 359
 
Et donc, ça ne marche pas ?
0
xav3601 Messages postés 3289 Date d'inscription   Statut Membre Dernière intervention   311
 
Ca marche tres bien avec le vbs!donc je profite pr poser la meme question avec le vba :)
Mais avec le vba la sytaxe n'est pas tout a fais la même:

shell "commande",vbHide

En mettant juste un true apres ca ne marche pas dans ce cas la :/
0
blux Messages postés 27120 Date d'inscription   Statut Modérateur Dernière intervention   3 359
 
C'est normal, vbs et vba ne sont pas identiques (et de loin !).

La fonction shell lance une commande et renvoie l'identifiant utilisé par le système pour gérer son exécution, c'est tout.

Il faut dans ce cas, savoir quelle commande tu veux lancer (DOS ou win32), pour savoir comment le faire si on veut une attente.
0
xav3601 Messages postés 3289 Date d'inscription   Statut Membre Dernière intervention   311
 
ma fonction shell fais appel a un batch :/
d'ou ma difficulte :)
pour l'instant j'ai juste mis une pause dans la macro a l'aide d'un sleep mais bon c'est pas tres propre
0
blux Messages postés 27120 Date d'inscription   Statut Modérateur Dernière intervention   3 359
 
c'est quoi ta ligne de commande ?

vois avec le start /wait

0
xav3601 Messages postés 3289 Date d'inscription   Statut Membre Dernière intervention   311
 
lol j'ai la bonne habitude de ne jamais regarder les erreurs et d'avoir la flemme de retourner les chercher...
je tape:

shell "start /wait pingpong.bat",vbHide

et plus precisement j'ai une erreur a la compilation fichier introuvable
0
blux Messages postés 27120 Date d'inscription   Statut Modérateur Dernière intervention   3 359
 
Voui, c'est normal, un .bat est exécuté via l'interpréteur de commande cmd (ou command.com pour les anciennes versions).

Je te propose ça :
Dim R As Double
Dim Str As String
Str = "cmd /C " + Chr(34) + "dir /s c:" + Chr(34)
R = Shell(Str, 6)
MsgBox R
While True
On Error GoTo Fin:
AppActivate R
Wend
Fin:
MsgBox "fini"
En gros, ça lance la commande dir via l'interpréteur de commande cmd, dès que la commande est finie on ferme la fenêtre (paramètre /C de cmd).

Mais comme la commande est lancée en asynchrone, VBA exécutera la commande suivante avant que le dir ne soit terminé, il faut donc tester si la commande dir est encore en machine, pour cela, on essaie de l'activer avec la commande appactivate et son numéro de lancement, nommé R.

Tant qu'on a pas d'erreur, c'est qu'elle active, quand on a une erreur (on ne peut pas activer la fenêtre), c'est que c'est fini (mais on ne sait pas comment : ok ou en erreur).

Ca irait ?
0
xav3601 Messages postés 3289 Date d'inscription   Statut Membre Dernière intervention   311
 
Ca va tres bien merci :)
0