Skip navigation.

digital-nation

Blog-note d'un informaticien procrastinate...

Passage de variable de MS-DOS vers VBS

, ,

Après quelques instant de repos, un retour en douceur…
J’ai eu il y a quelques temps une question sur laquelle j’ai cherché pendant pas mal de temps une solution :

Passer des paramètres de fichier BATCH en fichier BATCH ou de fichier BATCH vers un fichier BATCH… Mais que le dernier qui était lancé renvoyait la valeur des variables mandées vers le premier.

Partageons donc la solution :

Le BATCH
@ECHO OFF
CLS

ECHO ---------------------------------
ECHO Variables
ECHO ---------------------------------
ECHO Fichier : %~s0
ECHO Utilisateur : %1
ECHO (Vide au lancement du BATCH)
ECHO Password : %2
ECHO (Vide au lancement du BATCH)
PAUSE

WSCRIPT.EXE MSG.VBS %~s0

EXIT

Et le VBS :

' Passage de Variable BATCH VBS BATCH
' v0.3.19 (c) Groumphy


' Pose des variables
Dim Variable, UserName, Password, Executable

' Récupération du premier argument passé dans le VBS
' par le BATCH. Ligne de commande :
' WSCRIPT.EXE MSG.VBS Argument
Variable = wscript.arguments(0)

'Exposition de la variable récupérée
WScript.Echo "La variable est : " & Variable

' Demande du nom d'utilisateur par InputBox
UserName = InputBox("Quel est le nom d'utilisateur ?")

    ' Si le nom d'utilisateur est vide
    If IsNull(UserName) Then
        ' Message d'information d'erreur
        MsgBox "Erreur - Nom d'utilisateur incorrect."
    ' Sinon lancement de la suite de la procédure
    Else
        ' Demande du mot de passe par InputBox
        Password = InputBox("Quel est le mot de passe associé au nom d'utilisateur " & UserName)
        ' Si le mot de passe est vide
        If IsNull(Password) Then
            ' Message d'information d'erreur
            MsgBox "Erreur - Mot de passe incorrect."
        ' Sinon poursuite de la procédure
        Else
            ' Affichage de la variable, du nom d'utilisateur et du mot de passe
            WScript.Echo Variable & " " & UserName & " " & Password
            ' Définition de la variable en tant qu'objet du Shell
            Set Executable = CreateObject("WScript.Shell")
            ' Lancement de l'objet Shell contenant la variable, le nom
            ' d'utilisateur et le mot de passe
            Executable.Run Variable & " " & UserName & " " & Password
        End If
    End If


Comme d’habitude j’ai commenté la source … Rien de bien extraordinaire, mais j’ai été surpris de ne pas encore voir la solution dans beaucoup de forum.
Maintenant cela peut être utile.

Bien entendu le BATCH peut avoir une forme différente. Nous pourrions utiliser une petite ligne supplémentaire telle que :
SET TEST=%1
IF NOT DEFINED TEST1 GOTO END

Et juste avant la sortie du script :
:END
EXIT

Cela fermera le script si la variable renvoyée est vide…
Plutôt simple non ?

2008, 3 ans... Et du reposFOSDEM 2008

Comments

Anonymous 22. February 2008, 08:50

juk writes:

Source bien commentée mais
- Faire un "Dim Variable", je trouve ça très limite car Variable est une variable, comme tout ce qui vient après Dim d'ailleurs. Donc imprécis comme nom.
- Faire un "Dim UserName", OK. Mais il ne faut pas que UserName soit un mot clé... Trop limite...
- Toujours, oh oui toujours, préciser le type d'une variable. Même en VB !

Dim nomUtilisateur As String

n'est pas la même chose que

Dim nomUtilisateur.

Sinon, quand on utilise des fonctions, tout est passé en type Variant et les vérifications (l'Option Explicit) ne sert plus à grand chose car on peut passer un entier ou une chaîne.

Après, InputBox ne renvoie pas une chaîne à Null mais à vide.

L'informatique, un métier de rigueur !

Groumphy 27. February 2008, 20:18

Hmm et un blog un outil de détente... :wink:

Ici tu peux te servir de tes variables comme tu le désires... Personnellement tu peux les définir si tu le désires. Personnellement je n'ai pas exposé le script complet. Simplement le procédé de passer l'environnement à un autre.

Mais si tu préfères définir ce que tu veux passer, libre à toi :wink:
Cependant, je précise que je n'ai jamais dit que mes scripts sont sans fautes, loin de là ; ici je me détend, pour faire passer un peu de jeux.
:D

Anonymous 8. April 2008, 14:05

Piloutor writes:

Juk,

Aucune utilité à déclarer tes variables avec ...as ... en vbscript, si ce n'est te faire chier.
On est pas en C, ici , un code en Vbscript, ca sert a faire de l'administration pas à être encadré au dessus de son lit pour la beauté du code.

L'informatique, un métier de fainéants.

How to use Quote function:

  1. Select some text
  2. Click on the Quote link

Write a comment

Comment
(BBcode and HTML is turned off for anonymous user comments.)

If you can't read the words, press the small reload icon.


Smilies

December 2009
M T W T F S S
November 2009January 2010
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31