Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Commande dos CHOICE

3 réponses
Avatar
Help !
Bonjour,

Quel est l'équivalence sous Windows xp de la commande dos "choice"
fonctionnant sous Windows 98 ?

Cordialement.

3 réponses

Avatar
Pierre Maurette
"Help !" a écrit:

Bonjour,

Quel est l'équivalence sous Windows xp de la commande dos "choice"
fonctionnant sous Windows 98 ?
"CHOICE" dans l'aide de XP amène effectivement à "Nouvelles façons

d'effectuer des tâches courantes" et en face de "choice": "Non pris en
charge actuellement."
Essayez à tout hasard de copier un choice.exe d'une distrib 98 vers
votre répertoire [XP]:WINDOWSsystem32
Sinon il vous faudra vous orienter vers d'autres langages de scripts,
comme celui de XP que je ne connais pas.
--
Pierre

Avatar
Jean-Claude BELLAMY
Dans le message news:cmfhvh$kvh$ ,
Help ! s'est ainsi exprimé:

Bonjour,

Quel est l'équivalence sous Windows xp de la commande dos "choice"
fonctionnant sous Windows 98 ?


Elle n'existe pas (encore qu'on peut exécuter un choice.com de Win9x sous
XP)
Mais il existe nativement sous XP (et W2k ...) BEAUCOUP mieux que "choice" !
Sans aucun logicel extérieur, script ou quoi que ce soit d'autre !

Cela s'obtient à l'aide de la commande SET, suivie :
- du commutateur "/P" (P pour "prompt")
- du nom de la variable concernée
- du signe = (égal)
- d'une invite quelconque

Exemple :
...
SET /P ma_variable=Veuillez taper quelque chose :
...

Ce qui se traduira à l'écran par :
c:>Veuillez taper quelque chose :

et si l'utilisateur tape "Hello World!"

la variable "%ma_variable% contiendra "Hello World!"


Exemple comparatif
-------------------

1) Ancien batch Windows 98 faisant appel à "choice"
(repris à un utilisateur qui avait posé la même question de passage
Win98->XP)

@echo off
:menu
echo ceci est un test
echo 1.transfert
echo 2.winzip
echo 3.Quitter
choice /c:123 /t:3,60 /n Entrez un choix
if errorlevel 3 goto :fin
if errorlevel 2 goto :winzip
if errorlevel 1 goto :transfert
:transfert
DosFtpFile.bat
goto :menu
:winzip
winzip_epc.bat
goto :fin
:fin
exit

Dans cet exemple, on a un chiffre à taper, car "choice" n'accepte qu'UN SEUL
CARACTÈRE .


2) Le même batch transposé sous XP :
@echo off
:menu
echo ceci est un test
echo 1.transfert
echo 2.winzip
echo 3.Quitter
set /P choix=Entrez un choix
for %%R in (1 2 3) do if "%%R"=="%choix%" goto label%%R
echo choix invalide
goto menu
:label1
DosFtpFile.bat
goto menu
:label2
winzip_epc.bat
goto fin
:label3
:fin
exit


Mais la commande set /P permet de saisir n'importe quoi d'autre, en
particulier des CHAINES ENTIÈRES :

echo transfert
echo winzip
echo Quitter
set /P choix=Entrez votre commande
for %%R in (transfert winzip Quitter) do if /i "%%R"=="%choix%" goto %%R
:transfert ....
:winzip ....
:quitter
....
NB: Le commutateur "/i" dans la commande IF permet de s'affranchir de la
casse
(taper "transfert" ou "TRANSfeRt" donnera la même chose)



--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org
http://www.bellamyjc.org *


Avatar
Help !