Gestion arguments dans un select case
Bonjour,
De base je gère mes argument comme ça
Code:
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:
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