Execution de commande en VBS

cs_noug Messages postés 8 Date d'inscription dimanche 8 février 2004 Statut Membre Dernière intervention 26 juillet 2007 - 26 juil. 2007 à 08:19
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 - 26 juil. 2007 à 14:44
Bonjour à tous,

Non familier du développement, je me heurte au problème suivant :

je souhaite executer une ligne de commande depuis un script VB. Problème : la ligne de commande est contenue dans une variable, ce qui me donne le code suivant :

set wshshell=createobject("wscript.shell")
wshshell.run "c:\windows\system32\wscript.exe" MaVariable (est une ligne de commande)

Bien évidemment, la syntaxe ne doit pas être juste l'instruction wshshell.run attendant la ligne de commande en toutes lettres je suppose...

Quelqu'un aurait-il une solution à ce problème ????

Par avance merci.

16 réponses

lolokun Messages postés 1241 Date d'inscription mardi 10 octobre 2006 Statut Membre Dernière intervention 27 août 2013 7
26 juil. 2007 à 08:29
Bonjour,

Si ta ligne de commande est contenue dans ta variable, il suffit de faire Wshshell.run Mavariable
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
26 juil. 2007 à 08:55
 Bonjour à tous

Un peu plus de précision serait appréciable:
1) Que contient ta variable ? une commande ping par exemple ou l'exécution d'un script ?
2) Script en VB.Net ?

D'autre part, il est prohibé d'écrire "c:\windows" !

Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Exec "%windir%\system32\wscript.exe  d:\test.vbs"
ou
Set WshShell = WScript.CreateObject("WScript.Shell")
sPathLocal = WshShell.ExpandEnvironmentStrings("%WinDir%") & "\System32"
MsgBox sPathLocal

jean-marc
0
cs_noug Messages postés 8 Date d'inscription dimanche 8 février 2004 Statut Membre Dernière intervention 26 juillet 2007
26 juil. 2007 à 08:56
Négatif,

erreur, le fichier spécifié est introuvable
code 80070002

même si je place le script dans system32 pour me passer du chemin dans lequel se trouve wscript.exe...
0
cs_noug Messages postés 8 Date d'inscription dimanche 8 février 2004 Statut Membre Dernière intervention 26 juillet 2007
26 juil. 2007 à 09:11
Bonjour,

et merci pour votre participation ;)

ma variable est de ce type : C:\WINDOWS\system32\ntbackup.exe backup "@D:\Administration\Backup\backup.bks" /n "BACKUP" /d "Jeu créé le 16.07.2007 à 10:11" /v:no /r:no /rs:no /hc:on /m normal /j "Backup_Daily" /l:s /p "LTO Ultrium"

soit la création d'un job de backup.
0

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

Posez votre question
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
26 juil. 2007 à 09:19
Re,

Désolé, mais "erreur, le fichier spécifié est introuvable" ne répond pas à mes 2 questions.
C'est pour lancer une commande dos, un ping, telnet, netview, etc
OU pour lancer un script ?

Un visu de ton script nous facilitera la résolution du problème !
La variable système %WinDir% signifie, en général, "c:\windows" ou "c:\winnt", selon l'OS.

jean-marc
0
cs_noug Messages postés 8 Date d'inscription dimanche 8 février 2004 Statut Membre Dernière intervention 26 juillet 2007
26 juil. 2007 à 09:33
oui, désolé JMO, la réponse erreur était pour Lolokun

Mon script fait deux choses :
1 - construction de la ligne de commande du type : C:\WINDOWS\system32\ntbackup.exe backup "@D:\Administration\Backup\backup.bks" /n "BACKUP" /d "Jeu créé le 16.07.2007 " /v:no /r:no /rs:no /hc:on /m normal /j "Backup_Daily" /l:s /p "LTO Ultrium" -> je souhaite que toutes mes bandes de sauvegardes porte le nom BACKUP, je les distingue grâce au commentaire...
2 - je souhaite lancé cette ligne de commande depuis mon script.

Donc je ne souhaite pas lancer de nouveau script, mais un ntbackup.exe (dont les paramètres sont dans MaVariable).

j'espère répondre à tes questions...
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
26 juil. 2007 à 09:37
Re,

Dans ce cas, comme le préconise [auteurdetail.aspx?ID=878746 lolokun]
, la synthaxe serait +/-:

Set WshShell=WScript.CreateObject("WScript.Shell")
Result = WshShell.Run(TaVariable,0,True)

ou un wshshell.Exec(...)
Ma contribution va s'arrêter là, car je suis ignare en dos !

jean-marc
0
cs_noug Messages postés 8 Date d'inscription dimanche 8 février 2004 Statut Membre Dernière intervention 26 juillet 2007
26 juil. 2007 à 09:47
Merci pour votre aide JMO et lolokun

je vais chercher plus en avant, car cela ne fonctionne pas avec cette syntaxe...
0
lolokun Messages postés 1241 Date d'inscription mardi 10 octobre 2006 Statut Membre Dernière intervention 27 août 2013 7
26 juil. 2007 à 10:00
Re,

Ta ligne de commande me paraît un peu bizarre..As tu essayé au moins de la lancer manuellement??
Si ça fonctionne as tu vérifié dans ta variable que tu avais la bonne commande à exécuter en l'affichant?
0
cs_noug Messages postés 8 Date d'inscription dimanche 8 février 2004 Statut Membre Dernière intervention 26 juillet 2007
26 juil. 2007 à 10:43
oui, j'ai lancé le contenu de MaVariable dans une MsgBox, elle est tout à fait conforme à ce que je souhaite...

je crois réellement que c'est un soucis de syntaxe car si j'utilise ça :

set wshshell=createobject("wscript.shell")
wshshell.run "c:\windows\system32\wscript.exe" + " " + MaVariable

le message d'erreur est différent, il semble juste manquer des quotes
0
lolokun Messages postés 1241 Date d'inscription mardi 10 octobre 2006 Statut Membre Dernière intervention 27 août 2013 7
26 juil. 2007 à 11:08
Heuu oui c'est possible vu que ta variable contient aussi un .exe d'après ce que j'ai compris..

Mavariable= " C:\WINDOWS\system32\ntbackup.exe backup "@D:\Administration\Backup\backup.bks" /n "BACKUP" /d "Jeu créé le 16.07.2007 " /v:no /r:no /rs:no /hc:on /m normal /j "Backup_Daily" /l:s /p "LTO Ultrium" "
WshShell.run MaVariable,1,false
Et comme ça?
0
cs_noug Messages postés 8 Date d'inscription dimanche 8 février 2004 Statut Membre Dernière intervention 26 juillet 2007
26 juil. 2007 à 11:15
pas mieux, helas...
0
lolokun Messages postés 1241 Date d'inscription mardi 10 octobre 2006 Statut Membre Dernière intervention 27 août 2013 7
26 juil. 2007 à 11:29
Ok..
Ne connaissant pas la syntaxe j'ai regardé un peu sur le net et j'ai trouvé ceci domme aide..
ntbackup <operation> /a /b /d "text" /e /hc:<on/off> /l "<filename>" /r /t /tape:n /v

Et quand tu lances cette commande directement dans l'invité de commande elle fonctionne?

Le @ devant le path ne pose pas de problème?et le /n "backup" avant le /d??
Et sur la fin /l:s ??ne faut t'il pas spécifier un nom de fichier??Comme par exemple /l "s:\toto.log"

/l "<filename>", Localisation et nom du fichier de log

 
0
cs_noug Messages postés 8 Date d'inscription dimanche 8 février 2004 Statut Membre Dernière intervention 26 juillet 2007
26 juil. 2007 à 11:34
Merci pour ton aide,

mais le problème ne vient pas de la ligne de commande (utilisé déjà à maintes reprises...)

sous une invite de commande elle fonctionne (n'oublions pas que c'est une variable, celle-ci change en fait chaque jour)

Mon problème est l'execution de cette commande :

si je fais un
set wshshell=createobject("wscript.shell")
wshshell.run "c:\windows\system32\wscript.exe" la ligne de commande

ça fonctionne

mais si je fais

set wshshell=createobject("wscript.shell")
wshshell.run "c:\windows\system32\wscript.exe" MaVariable

La ça plante

merci encore pour tes efforts, perso je desespère... (horreur de perdre 4h sur des bêtises lol)
0
lolokun Messages postés 1241 Date d'inscription mardi 10 octobre 2006 Statut Membre Dernière intervention 27 août 2013 7
26 juil. 2007 à 11:48
Ok ok,


Dans ce cas le problème vient surement des guillemets, il faut peut-être essayer de les doubler ou de mettre un guillement simple lors de l'exécution..
J'ai l'impression qu'en changeant les " dans MaVariable par ' ça marcherait...
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
26 juil. 2007 à 14:44
Re,

Quelque chose du genre:

maVariable = "C:\WINDOWS\system32\ntbackup.exe backup " & _
             "@D:\Administration\Backup\backup.bks " & "/n " & _
             """BACKUP""" & " /d " & _
             """Jeu créé le 16.07.2007 """ & _
             " /v:no /r:no /rs:no /hc:on /m normal /j " & _
             """Backup_Daily"" /l:s /p " & """LTO Ultrium"""
MsgBox maVariable

set wshshell=createobject("wscript.shell")
wshshell.run "c:\windows\system32\wscript.exe " & MaVariable

jean-marc
0
Rejoignez-nous