Lancer CMD avec 2 variables VBS - Pour Sauvegarde -

Résolu
Skalouche11
Messages postés
16
Date d'inscription
lundi 29 septembre 2014
Statut
Membre
Dernière intervention
1 octobre 2014
- 29 sept. 2014 à 11:23
jordane45
Messages postés
35815
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
6 juillet 2022
- 29 sept. 2014 à 16:44
Bonjour,



Voici ma problèmatique:

Je dois créer un VBScript qui demande 2 réponses (les variables %1 et %2) pour ensuite lancer cette commande "macommande %1 %2".

Ceci lance une sauvegarde de base SQL avec pour %1 le nom de la base et pour %2 le nom du fichier de sauvegarde (stocké au même endroit que le .VBS et le .CMD.



Le plus gros problème, c'est moi c'est que je ne suis un gros novice en VBS, mais la tâche est assez urgente.



Voici mes scripts:



VBS:


Option Explicit
Dim %1
Dim %2
Dim oShell

%1 = InputBox("Quel est le nom de la societe?","Sauvegarde")
%2 = InputBox("Nom du fichier de sauvegarde:","Sauvegarde")

Set oShell = CreateObject("WScript.Shell")
oShell.Run "DB_sauve_1soc" & %1 & %2
Wscript.Quit

CMD:


c:

cd "C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn"
sqlcmd.exe -E -SSERVER\SAGE100 -Q"BACKUP DATABASE [P_%1] TO DISK = N'F:\SAGE\SAV\%2.BAK' WITH FORMAT, NAME = N'%1-Complète', SKIP, NOREWIND, NOUNLOAD, STATS = 10"

pause



Cela fonctionne bien en commande directe sur le serveur en question et dans le reperoire des fichiers scripts avec la commande "macommande TEST TEST092014".

Par contre quand je lance le vbs déjà j'ai un message d'erreur comme quoi il n'aime pas le nom des variables %1 et %2.

J'ai essayé en remplaçant par BASE et NAME mais j'ai une erreur à l'execution de la sauvegarde comme quoi il ne trouve pas la base [P_BASE]. Pourtant dans la Inputbox j'avais rentré le nom d'une base existante (pas "TEST" evidement)!



Ducoup je suis un peu pommé, je ne sais plus par où aller. Je suis sûr que quelqu'un pourra m'aider, à mon avis les lignes de codes pour ma problematiques ne sont pas très compliquées...

SVP :D





SkAlOuChE11

3 réponses

jordane45
Messages postés
35815
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
6 juillet 2022
358
Modifié par jordane45 le 29/09/2014 à 12:03
Bonjour,

Il ne faut pas nommer dans ton fichier vbs, les variables à envoyer avec un % ...
Sans oublier les espaces entre chaque variables à envoyer au script...

Essaye:
Option Explicit
Dim  maVar1
Dim maVar2
Dim cmdToRun 
Dim oShell

maVar1= InputBox("Quel est le nom de la societe?","Sauvegarde")
maVar2= InputBox("Nom du fichier de sauvegarde:","Sauvegarde")

cmdToRun = "DB_sauve_1soc " & maVar1 & " " & maVar2

  Set oShell = CreateObject("WScript.Shell")
  oShell.Run cmdToRun
  Wscript.Quit



Edit : Oublie d'un Espace entre le nom du fichier et les variables

Avant de poser une question, merci de lire la charte du site.
Cordialement, Jordane
1
ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
29 sept. 2014 à 11:50
Bonjour,
j'observe l'absence d'espaces dans le texte de ta commande
1
Skalouche11
Messages postés
16
Date d'inscription
lundi 29 septembre 2014
Statut
Membre
Dernière intervention
1 octobre 2014

29 sept. 2014 à 12:07
Alors là.

Il lance bien les 2 Inputbox l'une après l'autre. Je les remplie correctement, puis il me dit ligne 13 le fichier est introuvable.

Sauf que je n'ai fait aucune faute de frappe dans le fichier et il est bien au dans le même répertoire que le vbs, je l'ai sous les yeux.

J'ai essayé avec est sans ".cmd" ... rien y fait.


J'ai aussi modifier les %1 et %2 par mes nouveaux noms de variables, c'est bon?
0
jordane45
Messages postés
35815
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
6 juillet 2022
358
29 sept. 2014 à 12:09
Tu as testé mon code ?
0
jordane45
Messages postés
35815
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
6 juillet 2022
358
29 sept. 2014 à 12:11
Sachant que le code :
c:

cd "C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn"
sqlcmd.exe -E -SSERVER\SAGE100 -Q"BACKUP DATABASE [P_%1] TO  DISK = N'F:\SAGE\SAV\%2.BAK' WITH FORMAT,  NAME = N'%1-Complète', SKIP, NOREWIND, NOUNLOAD,  STATS = 10"

pause


... c'est dans quoi ? un fichier BAT ?
0
Skalouche11
Messages postés
16
Date d'inscription
lundi 29 septembre 2014
Statut
Membre
Dernière intervention
1 octobre 2014

Modifié par Skalouche11 le 29/09/2014 à 12:17
Ah oui j'avais pas vu l'EDIT concernant l'espace manquant entre le nom du fichier et le double cote.
Il lance bien la commande ducoup, mais me dit:
"La base de données 'P_maVar1' n'existe pas. Assurez-vous que le nom a été saisi correctement."

C'est pour ça que j'avais mis %1 et %2, pour ne pas avoir à changer le cmd.
0
jordane45
Messages postés
35815
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
6 juillet 2022
358
29 sept. 2014 à 12:32
Tu n'as pas renommé les variables dans ton BATCH .. tu as bien laissé les %1 et %2 ??
C'est Uniquement dans le premier script qu'il fallait les changer...
0
Skalouche11
Messages postés
16
Date d'inscription
lundi 29 septembre 2014
Statut
Membre
Dernière intervention
1 octobre 2014

29 sept. 2014 à 12:41
J'ai remis %1 et %2 dans le CMD. On dirait que ça marche.

Enfin ...
Juste le message d'erreur concerne les droits, comme quoi en gros il faut des droits d'admin sur les DB.
Il y a un paramètre pour le VBS afin qu'il s'exécute avec l'utilisateur Admin du domaine, même si il est lancé par un utilisateur classique?
0