Choix en batch

Voila je bosse sur un programme dans lequel l’utilisateur aura le choix entre plusieurs chiffres du style 1 2 3 …

je voudrais savoir quel serait la commande pour que dans mon batch l’utilisateur
qui aura déjà le choix entre 1 2 3 aura différentes action selon les nombres

ex :

Choix : 1 2 3 ?

1 - Coca
2 - Ice Tea
3 - Limonade

merci d’avance ! :super: :super:

C’est pour quel environnement ? Sous DOS ou le shell Windows ?

Shell
mais je crois avoir trouvé !


echo Votre choix est:

set /p choix=
if %choix%==1 goto stockage
if %choix%==2 goto normal
if %choix%==3 goto compress

:stockage
echo stockage marche !
goto fin

:normal
echo normal marche !
goto fin

:compress
echo compress marche !
goto fin

:fin
echo tout est ok !
pause > nul

Attention : si l’utilisateur valide directement sans rentrer une valeur, ton script va retourner une erreur.
Vaut mieux prévoir ce cas-là.

Exact, tu peux donc soit mettre des guillements dans les if :

set /p choix=
if "%choix%"=="1" goto stockage
if "%choix%"=="2" goto normal
if "%choix%"=="3" goto compress
goto fin

:stockage
echo stockage marche !
goto fin

:normal
echo normal marche !
goto fin

:compress
echo compress marche !
goto fin

:fin
echo tout est ok !
pause > nul

soit tester avant le choix si la variable n’existe pas (j’ai laissé le goto fin après les if ici aussi car si tu tappes un truc mais différent de 1, 2 ou 3 ça va faire stockage à tout les coups) :

set /p choix=
if "%choix%"=="" goto fin
if %choix%==1 goto stockage
if %choix%==2 goto normal
if %choix%==3 goto compress
goto fin

:stockage
echo stockage marche !
goto fin

:normal
echo normal marche !
goto fin

:compress
echo compress marche !
goto fin

:fin
echo tout est ok !
pause > nul

Par contre après une exécution où tu as tappé un chiffre si tu reste dans la même fenêtre dos, en ne tappant rien lors du set /p choix= la variable choix va contenir la valeur précédente, tu peux donc mettre un :

set choix=

à la fin de ton fichier.
:kimouss:

Le mieux serait d’utiliser les variables locales par le couple setlocal/endlocal.

Ce n’est pas très pratique sinon quand on a à “annuler” un grand nombre de variables :wink:

C’est vrai, mais je ne suis pas un pro en batch :D, mais bon vu qu’il a un “pause” à la fin de son batch je pense que c’est pour une exécution par double clic sur le .bat, et si c’est le cas il n’aura pas de problème.
:kimouss:

Et dans ce cas tu n’as pas besoin d’annuler des variables non plus :smiley:

Ouep c’est ce que je voulais dire par “pas de problème” :D, que les variables ne restent pas dans l’environnement après la fin de l’exécution.
:kimouss:

Oki. Pas de problème [:superguipom]

En fait, c’est une bonne habitude d’entourer son script par setlocal/endlocal (sauf cas particulier) afin de garantir son fonctionnement dans le maximum des cas possibles.

Ok, c’est bon à savoir :).
:kimouss: