Choice in batch sous xp

Aurelien -  
 tdvst -
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 @@@+++

9 réponses

  1. Aurelien
     
    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
    1. tdvst
       
      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
  2. sidarus Messages postés 387 Statut Contributeur 112
     
    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
  3. sidarus Messages postés 387 Statut Contributeur 112
     
    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
  4. Aurelien
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. sidarus Messages postés 387 Statut Contributeur 112
     
    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
  7. Aurelien
     
    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
  8. sidarus Messages postés 387 Statut Contributeur 112
     
    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
  9. Aurelien
     
    Merci beaucoup ~°sidarus°~
    Grace a toi je n aurais plus jamais besoin de personne!!!

    Comment ça non!! ^_^

    @@@+++
    0
  10. sidarus Messages postés 387 Statut Contributeur 112
     
    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