Choice in batch sous xp

Fermé
Aurelien - 27 août 2004 à 13:24
 tdvst - 10 juil. 2007 à 15:28
Bonjours a toutes et a tous!!!

J aurais voulu savoir quelle fonction pouvait remplacer la commande "choice" sous windows XP pour permettre a l utilisateur de choisir l action a lancer!
Voici le code que j essai de faire et la ligne où je but est soulignée!!

@echo off

:menu
cls
echo.
echo Choisissez la phrase a prononcer:
echo -------------------
echo 1. Coucou
echo 2. Comment ca va?
echo 3. Salut
echo.
echo Q. Au revoir
echo.
set /P choix= /c:123Q /t:Q,60 /n Votre choix ?
if errorlevel 255 goto erreur
if errorlevel 4 goto Au revoir
if errorlevel 3 goto Salut
if errorlevel 2 goto Comment ca va
if errorlevel 1 goto coucou
if errorlevel 0 goto erreur
goto fin

:erreur
echo Il y a eu une erreur.
pause
goto fin

:Au revoir
echo Au revoir
goto fin

:Comment ca va
echo Comment ca va?
goto menu

:coucou
echo Coucou
goto menu

:Salut
echo Salut
goto menu
:fin

J espère que vous pourez m aider!
Merci et @@@+++
A voir également:

9 réponses

Merci Sidarus d avoir répondu si rapidement!
Mais "choice" n existe plus sous XP (ou du moins cela ne fonctionne pas chez moi!)

J ai réussi a trouver une autre solution mais je ne comprend pas tout ce qui est souligné!!

@echo off
cls

:menu
echo.
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo ºL ORDINATEUR PARLANTº
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
echo.
echo Choisissez la phrase a prononcer:
echo ---------------------------------
echo 1. Coucou
echo 2. Comment ca va?
echo 3. Salut
echo q. Quitter
echo.
set choice=
set /p choice=Votre choix ?
if not '%choice%'=='' set choice=%choice:~0,1%
if %choice%==q goto Au revoir
if %choice%==3 goto Salut
if %choice%==2 goto Comment ca va
if %choice%==1 goto coucou

cls
echo Le choix %choice% n'est pas valide.
echo.
goto menu

:Au revoir
cls
echo Au revoir
pause>nul
goto fin

:Comment ca va
cls
echo Comment ca va?
pause>nul
goto menu

:coucou
cls
echo Coucou
pause>nul
goto menu

:Salut
cls
echo Salut
pause>nul
goto menu
:fin


Peut être pouriez vous m expliquer s il vous plait?
@@@+++
4
Explication des lignes surlignées:

rem met la variable choice à vide
set choice=
rem affiche le message Votre choix ? puis attend une entrée clavier (option /p de set) dont la valeur est mise dans choice
set /p choice=Votre choix ?
rem si la variable choice (donc l'entrée de l'utilisateur) n'est pas vide on ne garde que le premier caractère de la variable choice (%choice:~0,1% rend le premier caractère)
if not '%choice%'=='' set choice=%choice:~0,1%
rem on compare la valeur de choice avec les différentes valeurs possibles.
if %choice%==q goto Au revoir
if %choice%==3 goto Salut
if %choice%==2 goto Comment ca va
if %choice%==1 goto coucou

Toujours est-il que cette solution n'ouvre pas tous les avantages du choice (limitation des valeurs possibles, valeur par défaut au bout d'un certain temps), mais permet de récupérer facilement des entrées qui font plus de un caractère (par exemple on peut demander le nom de quelqu'un, un nom de répertoire...)

Néanmoins un set /? t'aurais appris la signification de set /p et de %choice:~0,1%

Cordialement,
0
sidarus Messages postés 387 Date d'inscription jeudi 23 octobre 2003 Statut Contributeur Dernière intervention 12 avril 2007 112
27 août 2004 à 15:26
Voici un exemple fonctionnel... adapte-le à tes besoins ;-)
@ECHO OFF
CHOICE /C:123 Choisissez entre %1

IF ERRORLEVEL ==3 GOTO CHOIX3
IF ERRORLEVEL ==2 GOTO CHOIX2
IF ERRORLEVEL ==1 GOTO CHOIX1
GOTO END

:CHOIX3
ECHO Vous avez choisi 3
GOTO END

:CHOIX2
ECHO Vous avez choisi 2
GOTO END

:CHOIX1
ECHO Vous avez choisi 1

:END


Télécharge/install PowerBatch, il va te rendre bien des services :
http://telecharger.01net.com/Total.php?searchstring=powerbatch&system=windows&x=0&y=0

Sites sur DOS : http://www.computerhope.com/msdos.htm

@pluche

~°sidarus°~
0
sidarus Messages postés 387 Date d'inscription jeudi 23 octobre 2003 Statut Contributeur Dernière intervention 12 avril 2007 112
27 août 2004 à 16:06
Re Aurelien

Il n'y a aucune erreur dans ton Batch. Pour t'en persuader, copie le code dans PowerBatch puis appuyes sur F9 (Menu :: Programme > Tests > ... du fichier courant).

PS: relis mon premier post... tout y est.

~°sidarus°~
0
J ai remarqué que l orsque l on install PowerBatch le fichier choice.com est lui aussi installer et comme je ne l avait pas (il n est pas fournis sous windowsXP) c est pourquoi mon code ne marchait pas !!

Pouriez vous quand meme me donner l explication de la partie soulignée de mon second code n utilisant pas le fichier choice.com?

Merci d avance!!
@@@+++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sidarus Messages postés 387 Date d'inscription jeudi 23 octobre 2003 Statut Contributeur Dernière intervention 12 avril 2007 112
28 août 2004 à 18:47
Comme dis tout est dans mon 1er post... 2me lien à l'adresse que je t'ai donné : All DOS Commande http://www.computerhope.com/msdos.htm#02

Bref vais pas t'expliquer puisque ce l'est deja... si tu veux de l'aide commence par t'aider :/

~°sidarus°~
0
Salut
Je pense que je vais m aider en révisant mes cours d anglais !
(ce sera pas du luxe parce que je suis une grosse quiche dans cette langue!) ^_^

Merci ~°sidarus°~ pour ton lien sur : All DOS Commande!

@@@+++
0
sidarus Messages postés 387 Date d'inscription jeudi 23 octobre 2003 Statut Contributeur Dernière intervention 12 avril 2007 112
29 août 2004 à 21:10
Autre chose... si tu veux savoir l'utilisation d'une commande c'est assez simple. Il suffit de taper la commande suivit de /? (dans le shell) :

Ex pour CHOICE /? :
C:\>choice /?
Attend que l'utilisateur fasse son choix dans le menu.

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

/C[:]touches Spécifie les touches configurables. Le défaut est ON
/N           Ne pas afficher les touches et le ? à l'invite.
/S           Permet de distinguer entre majuscules et minuscules.
/T[:]c,nn    Touche par défaut c après nn secondes
texte        Texte à afficher à l'invite

ERRORLEVEL est établi de manière à détecter une erreur de choix de touche.


Voilivoilou, cette petite astuce va notablement te venir en aide et te rendre casi indépendant :o)

~°sidarus°~
0
Merci beaucoup ~°sidarus°~
Grace a toi je n aurais plus jamais besoin de personne!!!

Comment ça non!! ^_^

@@@+++
0
sidarus Messages postés 387 Date d'inscription jeudi 23 octobre 2003 Statut Contributeur Dernière intervention 12 avril 2007 112
31 août 2004 à 13:32
Tiens encore une astuce kivodelor :)

tape ceci :
c:\>echo. |commande /? > c:\commande.txt


Remplace "commande" par la commande de ton choix (dir, echo, choice, ...), puis va sur c:\ et ô surprise :)

~°sidarus°~
0