Rechercher : dans
Par :

[VBS] Script en pause pendant execution DOS

Dernière réponse le 12 nov 2008 à 15:42:38 xav3601, le 12 nov 2008 à 10:06:31 
 Signaler ce message aux modérateurs

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

Configuration: Windows XP
Firefox 3.0.3

Meilleures réponses pour « [VBS] Script en pause pendant execution DOS » dans :
Exécuter un script shell Voir Exécution d'un script Pour pouvoir exécuter un script ou un programme en ligne de commande il y a plusieurs possibilités : 1. Le chemin absolu 2. Le chemin relatif 3. Modifier la variable PATH Note: Le Sha...
Créer un script d'ouverture de session VoirWindows permet de définir des scripts d'ouverture de session, c'est-à-dire des scripts contenant des commandes exécutés dès qu'un utilisateur ouvre une nouvelle session. Les scripts d'ouverture de session permettant de lancer des tâches qui seront...
VBScript - Les structures conditionnelles VoirQu'est-ce qu'une structure conditionnelle ? On appelle structure conditionnelle les instructions qui permettent de tester si une condition est vraie ou non, c'est-à-dire si la valeur de son expression vaut 0 ou 1 (VBScript associe le mot clé true à...

1

blux, le 12 nov 2008 à 10:15:29

Salut,

tu peux essayer de lancer ta commande avec un start /wait, ton script devrait attendre...

A+ Blux           

 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"

Répondre à blux

2

xav3601, le 12 nov 2008 à 10:19:59

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

Répondre à xav3601

3

blux, le 12 nov 2008 à 10:36:49

Dans strCommande, sans doute :

strCommande = "start /wait ta_commande"

A+ Blux           

 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"

Répondre à blux

4

xav3601, le 12 nov 2008 à 10:40:26

Merci pour ta reponse!
Je viens de tester mais ca ne marche pas :/

Répondre à xav3601

5

blux, le 12 nov 2008 à 10:49:22

ca ne marche pas
Tu peux être plus précis ?

A+ Blux           

 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"

Répondre à blux

6

xav3601, le 12 nov 2008 à 11:14:15

Erreur:le fichier spécifié est introuvable
Code: 80070002

Voila l'erreur au moment de lancer la commande

Répondre à xav3601

7

blux, le 12 nov 2008 à 13:01:17
  • +1

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).

A+ Blux           
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"

Répondre à blux

8

xav3601, le 12 nov 2008 à 13:11:54

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.

Répondre à xav3601

9

xav3601, le 12 nov 2008 à 13:24:49

Si je peux me permettre, je souhaiterais faire la meme chose....
en vba avec la fonction shell :)

Répondre à xav3601

10

blux, le 12 nov 2008 à 13:41:13

Et donc, ça ne marche pas ?

A+ Blux           

 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"

Répondre à blux

11

xav3601, le 12 nov 2008 à 13:45:49

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 :/

Répondre à xav3601

12

blux, le 12 nov 2008 à 13:57:24

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.

A+ Blux           

 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"

Répondre à blux

13

xav3601, le 12 nov 2008 à 14:32:24

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

Répondre à xav3601

14

blux, le 12 nov 2008 à 14:57:57

C'est quoi ta ligne de commande ?

vois avec le start /wait


A+ Blux           

 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"

Répondre à blux

15

xav3601, le 12 nov 2008 à 15:00:48

Voila ma ligne de commande :

Shell "pingpong.bat", vbHide

avec le start /wait devant ca ne marche pas non plus :/

Répondre à xav3601

16

blux, le 12 nov 2008 à 15:09:07

ca ne marche pas non plus
Et plus précisément ?

C'est quoi que tu tapes avec le start /wait ?

A+ Blux           

 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"

Répondre à blux

17

xav3601, le 12 nov 2008 à 15:10:33

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

Répondre à xav3601

18

blux, le 12 nov 2008 à 15:32:15
  • +1

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 ?

A+ Blux           
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"

Répondre à blux

19

 xav3601, le 12 nov 2008 à 15:42:38

Ca va tres bien merci :)

Répondre à xav3601
Collection CommentÇaMarche.net