IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

Gestion arguments dans un select case


Sujet :

VBScript

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 37
    Points : 42
    Points
    42
    Par défaut Gestion arguments dans un select case
    Bonjour,

    De base je gère mes argument comme ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    function test_arg()
    		'Compare le nombre d'arguments passe au script par 
    		'rapport au nombre d'arguments requis
    		On Error Resume Next
    		nb_arg_requis = 2				' Nombre d'arguments minimum obligatoire, si csrcipt sonde.vbs -a arg -w 2 -c 4 => 6 arguments obligatoire 
    		test_nb_arg()					' test 
    		dim argument
    		for j = 0 to argcountcommand-1 Step 2
    			argument = arg(j)
    			select case argument
    				case "-s","--service"
    						SERVICE = arg(j+1)   	' met la valeur de l'argument saisie apres -s dans la variable SERVICE
    						test_arg_oblig()
    				case "-p","--password"
    						PASSWORD = arg(j+1) 	' met la valeur de l'argument saisie apres -p dans la variable PASSWORD
    				case else
    						test_fin()  		' A utiliser si presence d'argument	
    			end select
    		next
    		mode_normal()  ' A conserver
    end function
    des que mon script rencontre le paramètre -s par exemple, il prend l'argument d'après et le met dans la variable SERVICE et passe au paramètre suivant avec le case

    mais la je suis fasse à un soucis je dois gérer le cas où l'argument après le paramètre "-s" peut être une phrase ou une suite de mot avec des espaces ce qui fait qu'avec case je rencontre des problèmes car l'argument d'après n'est pas forcement un nouveau paramètre mais peut être

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    function test_arg()
    		'Compare le nombre d'arguments passe au script par 
    		'rapport au nombre d'arguments requis
    		On Error Resume Next
    		nb_arg_requis = 4				' Nombre d'arguments minimum obligatoire, si csrcipt sonde.vbs -a arg -w 2 -c 4 => 6 arguments obligatoire 
    		test_nb_arg()					' test 
     
    		for j = 0 to argcountcommand-1 Step 2
    			argument = arg(j)
    			select case argument
    				case "-r","--rep"
    						test_arg_oblig
    						REP = arg(j+1) 
    						test_fin_arg_error = test_fin_arg_error + 2
    				case "-e","--error"
    						test_arg_oblig
    						ERREUR = arg(j+1) 
    						'wscript.echo arg(j+1) 
    						x=1										'Gestion du cas ou l'erreur comporte des espaces, test si l'argument suivant est -l				
    						test_fin_arg_error = test_fin_arg_error + 1
    						do while arg (j+x+1) <> "-l" xor test_fin_arg_error = argcountcommand
    						ERREUR = RTrim(ERREUR &" "& arg (j+1 +x))		'permet de recuperer l'erreur si elle est composée d'espaces
     
    						x=x+1
    						test_fin_arg_error = test_fin_arg_error + 1 
    						arg(j+1) = ERREUR 								'permet de gerer le case dans le cas ou il y a un -l 
    						arg (j+2) = arg (j+x+1)
     
    						loop
     
    				case "-l","--ligne"
    						test_arg_oblig
    						NB_LIGNES = arg (j+1)
     
    				case else
    						test_fin_wc()  		' A utiliser si presence d'argument	
    			end select
    		next
    		mode_normal()  ' A conserver
    end function
    j'arrive à récupérer l'erreur avec les espaces dans ma variable mais j'ai des problèmes quand il faut passer au paramètre -l

    je ne sais pas si j'ai été bien clair dans ma demande

    Galène

  2. #2
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 37
    Points : 42
    Points
    42
    Par défaut
    J'ai réussi je vous file le code pour ce que ça intéresse

    en faite il faut juste changer la valeur de "j" à la fin du do while

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    function test_arg()
    		'Compare le nombre d'arguments passe au script par 
    		'rapport au nombre d'arguments requis
    		On Error Resume Next
    		nb_arg_requis = 4				' Nombre d'arguments minimum obligatoire, si csrcipt sonde.vbs -a arg -w 2 -c 4 => 6 arguments obligatoire 
    		test_nb_arg()					' test 								
    		for j = 0 to argcountcommand-1 Step 2
     
    			argument = arg(j)
     
    			select case argument
    				case "-r","--rep"
     
     
    						test_arg_oblig
    						REP = arg(j+1) 
    						test_fin_arg_error = test_fin_arg_error + 2
     
    						case "-e","--error"
    						test_arg_oblig
    						ERREUR = arg(j+1) 
     
    						x=1										'Gestion du cas ou l'erreur comporte des espaces, test si l'argument suivant est -l				
    						test_fin_arg_error = test_fin_arg_error + 1
    						do while arg (j+x+1) <> "-l" xor test_fin_arg_error = argcountcommand
    						ERREUR = RTrim(ERREUR &" "& arg (j+1 +x))		'permet de recuperer l'erreur si elle est composée d'espaces						
    						x=x+1
    						test_fin_arg_error = test_fin_arg_error + 1 
    						arg(j+1) = ERREUR 								'permet de gerer le case dans le cas ou il y a un -l 		
    						loop			
    						'arg(j+1)= arg(j+x)
     
    						j=j+x-1					'permet de replacer l'argument j pour que le step + 2 prenne le -l
     
    				case "-l","--ligne"
    						test_arg_oblig				
    						NB_LIGNES = arg (j+1)										
    				case else
    						test_fin_wc()  		' A utiliser si presence d'argument	
    			wscript.echo arg(j)
    			end select
     
    		next
    		mode_normal()  ' A conserver
    end function

  3. #3
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 175
    Points
    17 175
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    Function test_arg()
            'Compare le nombre d'arguments passe au script par
            'rapport au nombre d'arguments requis
            On Error Resume Next
            nb_arg_requis = 4               ' Nombre d'arguments minimum obligatoire, si csrcipt sonde.vbs -a arg -w 2 -c 4 => 6 arguments obligatoire
            test_nb_arg                   ' test
            For j = 0 To argcountcommand - 1 Step 2
     
                argument = arg(j)
     
                Select Case argument
                    Case "-r", "--rep"
     
     
                            test_arg_oblig
                            REP = arg(j + 1)
                            test_fin_arg_error = test_fin_arg_error + 2
     
                            Case "-e", "--error"
                            test_arg_oblig
                            ERREUR = arg(j + 1)
     
                            x = 1                                   'Gestion du cas ou l'erreur comporte des espaces, test si l'argument suivant est -l
                            test_fin_arg_error = test_fin_arg_error + 1
                            Do While arg(j + x + 1) <> "-l" Xor test_fin_arg_error = argcountcommand
                            ERREUR = RTrim(ERREUR & " " & arg(j + 1 + x))   'permet de recuperer l'erreur si elle est composée d'espaces
                            x = x + 1
                            test_fin_arg_error = test_fin_arg_error + 1
                            arg(j + 1) = ERREUR                             'permet de gerer le case dans le cas ou il y a un -l
                            Loop
                            'arg(j+1)= arg(j+x)
     
                            j = j + x - 1           'permet de replacer l'argument j pour que le step + 2 prenne le -l
     
                    Case "-l", "--ligne"
                            test_arg_oblig
                            NB_LIGNES = arg(j + 1)
                    Case Else
                            test_fin_wc       ' A utiliser si presence d'argument
                wscript.echo arg(j)
                End Select
     
            Next
            mode_normal  ' A conserver
    End Function
    Je ne comprenais pas que le code ne prenait pas la couleur syntactique, j'ai donc modifier les lignes 6, 39 et 44, en supprimant les ()
    Je n'ai pas pour autant essayé le code, en VB6 il n'accepte pas ces (), Erreur de compilation, attendu =.
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Utiliser une boucle "For" dans un" Select Case"
    Par Novice_vba dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 23/04/2014, 09h34
  2. [AC-2003] faire une pause dans un select case
    Par chuspyto dans le forum IHM
    Réponses: 2
    Dernier message: 18/09/2009, 16h40
  3. récupérer une variable dans un select case
    Par rob2-9 dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 23/12/2005, 10h54
  4. [SYBASE] Select case mais dans le from !!!
    Par soulriver dans le forum Sybase
    Réponses: 5
    Dernier message: 25/07/2005, 17h14
  5. vérification de passage dans un select case
    Par arsgunner dans le forum ASP
    Réponses: 5
    Dernier message: 14/06/2004, 10h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo