Objet :Sélectionner les commandes à exécuter dans un fichier batch en fonction d'une valeur

 

Format :SWITCH expression

CASE value1 [.OR. value2 [.OR. value3 ...]]

[commands]

CASE value4

[commands]

CASEALL

[commands]

[DEFAULT

commands]

ENDSWITCH

 

expressionUne variable d'environnement, une variable interne, une fonction de variable, une chaîne de texte ou une combinaison de ces éléments, qui est utilisée pour sélectionner un groupe de commandes.
value1, value2 Unevaleur à tester ou plusieurs valeurs reliées par .OR.
commandsUne ou plusieurs commandes à exécuter si l'expression correspond à la valeur. Si vous utilisez plusieurs commandes, elles doivent être séparées par des séparateurs de commandes ou placées sur des lignes distinctes dans un fichier batch.

 

Voir également : IF et IFF.

 

Utilisation :

 

SWITCH ne peut être utilisé que dans les fichiers batch. Elle permet de sélectionner une commande ou un groupe de commandes à exécuter en fonction des valeurs possibles d'une variable ou d'une combinaison de variables et de texte.

 

La commande SWITCH est toujours suivie d'une expression créée à partir de variables d'environnement, de variables internes, de fonctions de variables et de chaînes de texte, puis d'une séquence d'instructions CASE correspondant aux valeurs possibles  de l'expression, d'une instruction DEFAULT facultative et d'une instruction ENDSWITCH. Chaque instruction CASE et l'instruction DEFAULT peuvent être suivies d'une ou plusieurs commandes.

 

TCC évalue l'expression et lacompare séquentiellement à la liste des valeurs des instructions CASE, en commençant par la première . Les règles de comparaison sont les mêmes que celles utilisées pour l' opérateur relationnel EQ; voir Comparaisons numériques et de chaînes pour plus de détails. Si une correspondance est trouvée, les commandes qui suivent l'instruction CASE correspondante sont exécutées, et le fichier batch se poursuit avec les commandes qui suivent ENDSWITCH. S'il existe des correspondances dans les instructions CASE suivantes, elles sont ignorées. La valeur d' une instruction CASE peut être un élément littéral, une variable ou une fonction (qui sera développée avant la comparaison avec l'expression SWITCH).

 

Les instructions CASE peuvent inclure des caractères génériques et des expressions régulières.

 

L'instruction facultative CASEALL doit suivre toutes les instructions CASE, mais précéder DEFAULT. Si un bloc CASE précédent a été exécuté, CASEALL sera également exécuté ; dans le cas contraire, il est ignoré.

 

Si, au cours de la recherche d'une correspondance, l'instruction DEFAULT est rencontrée, les commandes qui la suivent, le cas échéant, sont exécutées et le fichier batch se poursuit avec les commandes qui suivent ENDSWITCH. Les instructions CASE qui suivent l'instruction DEFAULT sont ignorées.

 

Les commandes SWITCH peuvent être imbriquées.

 

Vous pouvez quitter tous les traitements SWITCH / ENDSWITCH en utilisant GOTO jusqu'à une ligne après le dernier ENDSWITCH.

 

Restrictions

 

Chaque instruction SWITCH, CASE, DEFAULT et ENDSWITCH doit se trouver sur une ligne distincte et ne peut être suivie d'un séparateur de commandes. (Iln'y a aucune restriction concernant le regroupement et l'utilisation de séparateurs de commandes dans les commandes CASE ou DEFAULT.

 

Vous pouvez lier une liste de valeurs dans une seule instruction CASE avec .OR, mais pas avec .AND ou .XOR.

 

Exemples :

 

Le fragment de fichier batch ci-dessous affiche un message si l'utilisateur appuie sur A, un autre si l'utilisateur appuie sur B ou C, et un troisième si l'utilisateur appuie sur une autre touche:

 

inkey Enter a keystroke: %%key

switch %key

case A

echo It's an A

case B .or. C

echo It's either B or C

default

echo It's none of A, B, or C

endswitch

 

Dans l'exemple ci-dessus, la valeur d'une seule variable d'environnement a été utilisée comme expression. Toutefois, vous pouvez utiliser d'autres types d'expressions si nécessaire. La première instruction SWITCH ci-dessous sélectionne une commande à exécuter en fonction de la longueur d'une variable, et la seconde base l'action sur une chaîne de texte entre guillemets stockée dans une variable d'environnement :

 

switch %@len[%var1]

case 0

echo Missing var1

case 1

echo Single character

...

endswitch

 

 

switch "%string1"

case "This is a test"

echo Test string

case "The quick brown fox"

echo It's the fox

...

endswitch