Démarrer un fichier de commande depuis VBS

Le
Pierre-Yves
Bonjour,

Voila, il s'agit de faire exécuter un fichier de commande depuis un script
VBS et d'attendre que son exécution soit terminée avant de continuer. Pour
cela j'ai utilisé le code suivant sur un serveur Windows 2003 :

strCmd = "%COMSPEC% /c start /D d:toolsbatch /NORMAL /WAIT CleanupUsr.cmd"
WshShell.Run strCmd,0,True

Malheureusement, le fichier de commande ne s'exécute pas via VBS (j'ai
l'impression qu'il ne se passe rien), alors que lorsque je l'exécute en
interactif (en double-cliquant dessus) il s'exécute sans problème.

Quelqu'un aurai-t-il une idée ?

Merci d'avance et meilleures salutations
Pierre-Yves
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Méta-MCI \(MVP\)
Le #16799771
Bonsoir !

Et, avec cette 2ème ligne :
WScript.CreateObject("WScript.Shell").Run strCmd,0,True
c'est pas plus mieux bien ?

@+
--
Michel Claveau
Gilles LAURENT [MVP]
Le #16801111
"Pierre-Yves" message de
news:
| Bonjour,

Bonjour,

| Voila, il s'agit de faire exécuter un fichier de commande depuis un
| script VBS et d'attendre que son exécution soit terminée avant de
| continuer. Pour cela j'ai utilisé le code suivant sur un serveur
| Windows 2003 :
|
| strCmd = "%COMSPEC% /c start /D d:toolsbatch /NORMAL /WAIT
| CleanupUsr.cmd" WshShell.Run strCmd,0,True

Nul besoin de faire appel à la commande "Start" sachant que la méthode
"Run" de l'objet "WshShell" permet déjà d'attendre la fin de l'exécution
d'une tâche. Ci-dessous la définition de la méthode "Run" :

Run (Command, [WindowStyle], [WaitOnReturn])

Je vous propose donc la solution suivante :

strCmd="%COMSPEC% /c d:toolsbatchCleanupUsr.cmd"
CreateObject("WScript.Shell").Run strCmd, 0, True

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
Pierre-Yves
Le #17233431
Bonsoir Michel,

Merci pour votre réponse rapide.

J'avais bien défini plus haut dans mon code : Set WshShell=
Wscript.CreateObject("Wscript.Shell").

J'ai cependant utilisé les commandes proposées, mais le résultat est
identique avec toutefois une amélioration : plus de message d'erreur de VBS,
mais le fichier de commande ne s'exécute toujours pas et le script continue
simplement à la ligne suivante.

En complément d'information, mon script est démarré par le gestionnaire de
tâche, mais il donne les mêmes résultats si je le démarre manuellement.

Alors, si vous avec une autre idée, je suis preneur.

Meilleure salutations
Pierre-Yves

"Méta-MCI (MVP)" de news: 48caef19$0$897$
Bonsoir !

Et, avec cette 2ème ligne :
WScript.CreateObject("WScript.Shell").Run strCmd,0,True
c'est pas plus mieux bien ?

@+
--
Michel Claveau



Pierre-Yves
Le #17233591
Bonjour Gilles

Merci pour votre réponse rapide.

J'ai bien essayé votre proposition, mais sans succès (voir aussi ma réponse
à Michel, Méta-MCI)
Alors si vous avec une autre idée, je suis preneur.

Meilleure salutations
Pierre-Yves


"Gilles LAURENT [MVP]"
"Pierre-Yves" message de
news:
| Bonjour,

Bonjour,

| Voila, il s'agit de faire exécuter un fichier de commande depuis un
| script VBS et d'attendre que son exécution soit terminée avant de
| continuer. Pour cela j'ai utilisé le code suivant sur un serveur
| Windows 2003 :
|
| strCmd = "%COMSPEC% /c start /D d:toolsbatch /NORMAL /WAIT
| CleanupUsr.cmd" WshShell.Run strCmd,0,True

Nul besoin de faire appel à la commande "Start" sachant que la méthode
"Run" de l'objet "WshShell" permet déjà d'attendre la fin de l'exécution
d'une tâche. Ci-dessous la définition de la méthode "Run" :

Run (Command, [WindowStyle], [WaitOnReturn])

Je vous propose donc la solution suivante :

strCmd="%COMSPEC% /c d:toolsbatchCleanupUsr.cmd"
CreateObject("WScript.Shell").Run strCmd, 0, True

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr




Gilles LAURENT [MVP]
Le #17241181
"Pierre-Yves" wrote:

Bonjour Gilles



Bonjour Pierre-Yves,

Merci pour votre réponse rapide.

J'ai bien essayé votre proposition, mais sans succès (voir aussi ma réponse
à Michel, Méta-MCI)
Alors si vous avec une autre idée, je suis preneur.



Pourriez-vous me transmettre le script batch par voie de messagerie ? Cela
me permettra de réaliser quelques tests "Live" !

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
Michel__D
Le #17252901
Bonjour,

Pierre-Yves a écrit :
Bonjour,

Voila, il s'agit de faire exécuter un fichier de commande depuis un script
VBS et d'attendre que son exécution soit terminée avant de continuer. Pour
cela j'ai utilisé le code suivant sur un serveur Windows 2003 :

strCmd = "%COMSPEC% /c start /D d:toolsbatch /NORMAL /WAIT CleanupUsr.cmd"
WshShell.Run strCmd,0,True

Malheureusement, le fichier de commande ne s'exécute pas via VBS (j'ai
l'impression qu'il ne se passe rien), alors que lorsque je l'exécute en
interactif (en double-cliquant dessus) il s'exécute sans problème.

Quelqu'un aurai-t-il une idée ?




Si par "(j'ai l'impression qu'il ne se passe rien)" tu veux dire que
tu ne vois rien il suffit de changer le 0 en une autre valeur qui montre
la fenêtre de commande, par exemple :

strCmd="%COMSPEC% /c d:toolsbatchCleanupUsr.cmd"
CreateObject("WScript.Shell").Run strCmd, 3, True

PS:Et pour être sur que l'attente se fait bien, il peut être inséré une
pause dans le fichier batch (CleanupUsr.cmd).
Pierre-Yves
Le #17336771
Salut Michel

J'ai suivi tes propositions (paramètre 3 + pause dans le batch), mais
toujours sans obtenir les résultats voulus: aucune fenêtre ne s'ouvre, ou
alors c'est très furtif, et aucune trace de la du batch censé être en pause
(à mon avis il n'est pas exécuté).

Je me pose donc la question si cette methode fonctionne vraiement ?

Est-ce que quelqu'un l'a déjà utilisée pratiquement ?

Merci et cordiales salutations
Pierre-Yves

"Michel__D" news:
Bonjour,

Pierre-Yves a écrit :
Bonjour,

Voila, il s'agit de faire exécuter un fichier de commande depuis un
script VBS et d'attendre que son exécution soit terminée avant de
continuer. Pour cela j'ai utilisé le code suivant sur un serveur Windows
2003 :

strCmd = "%COMSPEC% /c start /D d:toolsbatch /NORMAL /WAIT
CleanupUsr.cmd"
WshShell.Run strCmd,0,True

Malheureusement, le fichier de commande ne s'exécute pas via VBS (j'ai
l'impression qu'il ne se passe rien), alors que lorsque je l'exécute en
interactif (en double-cliquant dessus) il s'exécute sans problème.

Quelqu'un aurai-t-il une idée ?




Si par "(j'ai l'impression qu'il ne se passe rien)" tu veux dire que
tu ne vois rien il suffit de changer le 0 en une autre valeur qui montre
la fenêtre de commande, par exemple :

strCmd="%COMSPEC% /c d:toolsbatchCleanupUsr.cmd"
CreateObject("WScript.Shell").Run strCmd, 3, True

PS:Et pour être sur que l'attente se fait bien, il peut être inséré une
pause dans le fichier batch (CleanupUsr.cmd).


Michel__D
Le #17347141
Bonjour,

Alors oui la méthode run de l'objet "WScript.Shell" fonctionne, maintenant
ton problème est un problème de débugage donc il y a plusieurs façons de
faire (à toi de trouver la tienne), tu peux par exemple mettre des msgbox
aprés chaque ligne du script que tu auras developpé :

' Créer l'objet "WScript.Shell"
Set oShell = CreateObject("WScript.Shell")
msgbox "Test1 Ok"
' Remplacer la variable %COMSPEC% par sa valeur réelle
strCmd="%COMSPEC% /c d:toolsbatchCleanupUsr.cmd"
iRet = oShell.Run strCmd, 3, True
msgbox "Test2 Ok" & vbcrlf & iRet

Ps:Tu peux aussi utiliser un utilitaire qui t'indique les process en cours
de fonctionnement.

http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx


Pierre-Yves a écrit :
Salut Michel

J'ai suivi tes propositions (paramètre 3 + pause dans le batch), mais
toujours sans obtenir les résultats voulus: aucune fenêtre ne s'ouvre, ou
alors c'est très furtif, et aucune trace de la du batch censé être en pause
(à mon avis il n'est pas exécuté).

Je me pose donc la question si cette methode fonctionne vraiement ?

Est-ce que quelqu'un l'a déjà utilisée pratiquement ?

Merci et cordiales salutations
Pierre-Yves

"Michel__D" news:
Bonjour,

Pierre-Yves a écrit :
Bonjour,

Voila, il s'agit de faire exécuter un fichier de commande depuis un
script VBS et d'attendre que son exécution soit terminée avant de
continuer. Pour cela j'ai utilisé le code suivant sur un serveur Windows
2003 :

strCmd = "%COMSPEC% /c start /D d:toolsbatch /NORMAL /WAIT
CleanupUsr.cmd"
WshShell.Run strCmd,0,True

Malheureusement, le fichier de commande ne s'exécute pas via VBS (j'ai
l'impression qu'il ne se passe rien), alors que lorsque je l'exécute en
interactif (en double-cliquant dessus) il s'exécute sans problème.

Quelqu'un aurai-t-il une idée ?



Si par "(j'ai l'impression qu'il ne se passe rien)" tu veux dire que
tu ne vois rien il suffit de changer le 0 en une autre valeur qui montre
la fenêtre de commande, par exemple :

strCmd="%COMSPEC% /c d:toolsbatchCleanupUsr.cmd"
CreateObject("WScript.Shell").Run strCmd, 3, True

PS:Et pour être sur que l'attente se fait bien, il peut être inséré une
pause dans le fichier batch (CleanupUsr.cmd).






Michel__D
Le #17347281
Il manque des parenthèses :

' Créer l'objet "WScript.Shell"
Set oShell = CreateObject("WScript.Shell")
msgbox "Test1 Ok"
' Remplacer la variable %COMSPEC% par sa valeur réelle
strCmd="%COMSPEC% /c d:toolsbatchCleanupUsr.cmd"
iRet = oShell.Run(strCmd,3,True)
msgbox "Test2 Ok" & vbcrlf & iRet


Michel__D a écrit :
Bonjour,

Alors oui la méthode run de l'objet "WScript.Shell" fonctionne, maintenant
ton problème est un problème de débugage donc il y a plusieurs façons de
faire (à toi de trouver la tienne), tu peux par exemple mettre des msgbox
aprés chaque ligne du script que tu auras developpé :

' Créer l'objet "WScript.Shell"
Set oShell = CreateObject("WScript.Shell")
msgbox "Test1 Ok"
' Remplacer la variable %COMSPEC% par sa valeur réelle
strCmd="%COMSPEC% /c d:toolsbatchCleanupUsr.cmd"
iRet = oShell.Run strCmd, 3, True
msgbox "Test2 Ok" & vbcrlf & iRet

Ps:Tu peux aussi utiliser un utilitaire qui t'indique les process en cours
de fonctionnement.

http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx


Pierre-Yves a écrit :
Salut Michel

J'ai suivi tes propositions (paramètre 3 + pause dans le batch), mais
toujours sans obtenir les résultats voulus: aucune fenêtre ne s'ouvre,
ou alors c'est très furtif, et aucune trace de la du batch censé être
en pause (à mon avis il n'est pas exécuté).

Je me pose donc la question si cette methode fonctionne vraiement ?

Est-ce que quelqu'un l'a déjà utilisée pratiquement ?

Merci et cordiales salutations
Pierre-Yves

"Michel__D" message de news:
Bonjour,

Pierre-Yves a écrit :
Bonjour,

Voila, il s'agit de faire exécuter un fichier de commande depuis un
script VBS et d'attendre que son exécution soit terminée avant de
continuer. Pour cela j'ai utilisé le code suivant sur un serveur
Windows 2003 :

strCmd = "%COMSPEC% /c start /D d:toolsbatch /NORMAL /WAIT
CleanupUsr.cmd"
WshShell.Run strCmd,0,True

Malheureusement, le fichier de commande ne s'exécute pas via VBS
(j'ai l'impression qu'il ne se passe rien), alors que lorsque je
l'exécute en interactif (en double-cliquant dessus) il s'exécute
sans problème.

Quelqu'un aurai-t-il une idée ?



Si par "(j'ai l'impression qu'il ne se passe rien)" tu veux dire que
tu ne vois rien il suffit de changer le 0 en une autre valeur qui
montre
la fenêtre de commande, par exemple :

strCmd="%COMSPEC% /c d:toolsbatchCleanupUsr.cmd"
CreateObject("WScript.Shell").Run strCmd, 3, True

PS:Et pour être sur que l'attente se fait bien, il peut être inséré une
pause dans le fichier batch (CleanupUsr.cmd).








Publicité
Poster une réponse
Anonyme