LA COMMANDE CHOICE

Commande externe. Ne fonctionne que dans un batch.

Utilisee dans les batchs pour que l'utilisateur puisse entrer des donnees, cette commande permet de choisir l'une des touches predefinies et de retourner un code [ERRORLEVEL] (aussi appele code de sortie) au batch.

Syntaxe

CHOICE [/C[:]touches] [/N] [/S] [/T[:]c,nn] [texte]

Parametres

texte

Specifie le texte a afficher avant l'invite. Les guillemets ne sont pas indispensables sauf si vous incluez un commutateur, un slash (/). Si vous ne specifiez pas de texte, CHOICE n'affiche qu'une invite.

Commutateurs

/C[:]touches

Specifie les touches configurables dans l'invite. Lorsqu'elles s'affichent, ces touches sont separees par des virgules, elles figurent entre crochets ([]) et sont suivies d'un point d'interrogation. Si vous ne specifiez pas le commutateur /C, CHOICE utilise ON par defaut. Les deux points (:) ne sont pas obligatoires.

/N

Permet a CHOICE de ne pas afficher l'invite mais seulement le texte qui la precede. Si vous utilisez le commutateur /N, les touches specifiees restent valables.

/S

Permet a CHOICE de distinguer majuscules et minuscules. Si le commutateur /S n'est pas specifie, CHOICE accepte les deux.

/T[:]c,nn

Permet a CHOICE de marquer une pause d'un certain nombre de secondes avant de choisir une touche par defaut. Les valeurs du commutateur /T sont les suivantes:

nn

Specifie la duree de la pause en secondes. Vous pouvez entrer un chiffre entre 0 et 99. Si vous specifiez 0, CHOICE choisit instantanement une valeur par defaut.

c

Specifie le caractere a choisir par defaut apres nn secondes (il doit correspondre a l'un des choix specifies dans le commutateur /C).

Parametres [ERRORLEVEL]

La premiere touche predefinie retourne la valeur 1, la seconde la valeur 2, la troisieme la valeur 3, etc. Si vous appuyez sur une touche non predefinie, CHOICE emet un signal sonore en envoyant un caractere BEL ou 07h.

Si la commande CHOICE decele une erreur, CHOICE retourne la valeur [ERRORLEVEL] 255. Si vous appuyez sur CTRL+PAUSE (ou CTRL+C), CHOICE retourne la valeur [ERRORLEVEL] 0.

Si vous utilisez des parametres [ERRORLEVEL] dans un batch, rangez les par ordre decroissant, du code d'erreur le plus eleve (255) au moins eleve (0).

Exemples

Texte affiche apres l'execution de CHOICE dans un batch

Si vous utilisez la syntaxe dans un batch, choice /c:onc voici ce qui apparait a l'ecran apres execution de la commande CHOICE: [O,N,C]?

Si vous ajoutez du texte a la syntaxe, choice /c:onc Oui, Non ou Continuer voici ce qui apparait apres execution de la commande CHOICE: Oui, Non ou Continuer [O,N,C]?

Texte affiche apres exclusion de l'invite

Si, comme dans l'exemple ci-dessous, vous utilisez le commutateur /N pour exclure l'invite d'un programme de commandes,choice /n Oui, Non ou Continuer ? seul le texte specifie s'affiche apres execution de la commande CHOICE: Oui, Non ou Continuer

Texte affiche apres utilisation du commutateur T

Si vous utilisez la syntaxe dans un programme de commandes, choice /c:onc /t:n,5 voici le texte qui s'affiche apres execution de la commande CHOICE: [O,N,C]?

Si au bout de cinq secondes vous n'avez pas appuye sur une touche, CHOICE choisit N et retourne la valeur [ERRORLEVEL] 2. Si vous appuyez sur une touche avant que les cinq secondes se soient ecoulees, CHOICE retourne la valeur correspondant a votre choix.

Pour obtenir une option de defragmentation du lecteur C: lorsque vous demarrez votre PC, vous pouvez ajouter les lignes suivantes a votre fichier [AUTOEXEC.BAT]:

choice Defrag drive /to,5

if errorlevel 2 goto Passer_Defrag

defrag c:

:Passer_Defrag

Si vous appuyez sur N sous 5 secondes, DEFRAG ne sera pas lance et CHOICE retournera une valeur [ERRORLEVEL] de 2. Si vous n'appuyez pas sur N sous 5 secondes, ou si vous choisissez O, DEFRAG sera lance sur le lecteur C:.

Utilisation de CHOICE dans un batch

L'exemple suivant montre comment selectionner l'un des trois programmes suivants a l'aide de l'option CHOICE: l'Editeur du DOS, Defrag ou scandisk. Notez que les instructions [IF] [ERRORLEVEL] sont affichees par ordre decroissant. Le DOS considere l'instruction [IF] comme vraie si le parametre [ERRORLEVEL] retourne par la commande CHOICE est superieur ou egal au parametre specifie dans la commande [IF].

@echo off

cls

echo.

echo A Traitement de texte

echo B Defrag

echo C Scandisk

echo.

choice /c:ABC Choisissez une option

if errorlevel 3 goto scandisk

if errorlevel 2 goto defrag

if errorlevel 1 goto edit

:edit

edit

goto Fin

:defrag

defrag

goto Fin

:scandisk

scandisk

:Fin

Retour en haut

Retour au sommaire de la rubrique

Retour au debut