Bonjour,
De base je gère mes argument comme ça
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
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
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
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
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
je ne sais pas si j'ai été bien clair dans ma demande
Galène
Partager