Question pointue sur le batch - Windows & Software
Marsh Posté le 17-04-2001 à 14:17:32
Fais plutôt comme ceci :
:choix
cls
echo explications diverses à adapter à ton cas
CHOICE /C:ABC CHOISISSEZ UNE OPTION
IF ERRORLEVEL=3 goto choixC
IF ERRORLEVEL=2 goto choixB
IF ERRORLEVEL=1 goto choixA
echo Erreur de saisie
pause
Goto choix
:choixA
goto fin
etc...
Marsh Posté le 17-04-2001 à 14:22:19
Ca va pas ton truc, puisque choice ne permet que de taper la lettre juste.
Essaie et tu verras que ça ne fonctionne pas. Tu n'arriveras pas à la ligne d'erreur
Marsh Posté le 17-04-2001 à 14:29:10
Précise ton besoin : si choice permet de forcer les caractères autorisés, où est le problème ?
Marsh Posté le 17-04-2001 à 14:59:25
Ce que je voudrais, c'est que choice renvoie une erreur quand je tape une autre lettre que celle qui est dans les choix
Marsh Posté le 17-04-2001 à 15:26:13
Tu as essayé ton truc ? Le code 255 est renvoyé quand choice décèle une erreur et pas quand on se trompe de touche
Je vous montre ci-dessous l'aide pour choice
------------------------
Si vous appuyez sur une touche non prédéfinie, CHOICE émet un signal sonore en envoyant un caractère BEL ou 07h au pupitre de commande.
------------------------
Il est bien marqué qu'il faut le BEL ou le 07h
Marsh Posté le 17-04-2001 à 15:35:18
CHOICE emet un signal sonore ...
SONORE pas de renvoi E/S ...
Ton choice attendra un choix valide.
Marsh Posté le 17-04-2001 à 15:37:56
Il est bien marqué que choice renvoie un signal sonore et les caractères BEL et 07h
Donc je voudrait le code errorlevel pour ces 2 caractères
Marsh Posté le 17-04-2001 à 15:47:30
JPA etait pourtant sympa de t'avoir mâché le boulot...
il t'avait montré le chemin avec son doigt,et toi tu regardes son coude....
Marsh Posté le 17-04-2001 à 15:49:17
Je comprend pas bien olivierb, as-tu essayé le code de JPA, il ne renvoie pas d'erreur en cas de mauvais caractère !!!
Marsh Posté le 17-04-2001 à 16:54:58
siiii,il couine comme une vache...!!!
bon...
choice teste lui même les equivalence entre le clavier et choix specifié dans ton prog par /c:ABC (,dans l'exemple de JPA,si tu tapes A c'est errorlevel 1 qui est activé,B c'est errorlevel 2,,...etc)
si aucun de ceux-là n'est specifié ,ben tu reste sur ta question,et si tu tapes aut'chose il Hurle lui-même, il ne positionne pas errorlevel a un code BELL ...
Marsh Posté le 17-04-2001 à 16:58:54
Contrairement, à ce que tu penses (et tu n'es pas censé le savoir à la base :-), je connais assez bien le batch.
Je connaissais les code errorlevel par rapport à l'option /c:ABC de choice.
Donc tu me réponds que, à part faire le bruit, il n'est pas possible de faire en sorte que choice renvoie une erreur (caractère) ?
Marsh Posté le 17-04-2001 à 17:11:23
Après relecture,
------------------------
Si vous appuyez sur une touche non prédéfinie, CHOICE émet un signal sonore en envoyant un caractère BEL ou 07h au pupitre de commande.
------------------------
celà ne veut pas dire que tu peux utiliser le code que renvoie Choice, mais que le HP interne va couiner...
je suis d'accord avec toi que sur ma proposition il y a 3 lignes inutiles (la gestion des erreurs) vu que choice les gère et que ces 3 lignes ne seront jamais exécutées.
A+
Marsh Posté le 17-04-2001 à 17:37:58
Merci pour vos réponse même si je n'ai pas réponse à mes questions.
Poru vous remercier, voiçi le programme en batch (un jeu en fait) pour lequel j'avais besoin de la réponse. Si vous avez des propositions pour le rendre plus marrant, n'hésitez pas à m'en parler
------------------------
@echo off
set p=JeuGD
if not exist "C:\PointBat\*.*" md "C:\PointBat"
if exist "C:\PointBat\!%p%*.*" del "C:\PointBat\!%p%*.*" > nul
%comspec% /e:2048/c for %%v in (1 2) do prompt set time$q$d $t$_ | find/v "$" > "C:\PointBat\!%p%{T}.bat"
call "C:\PointBat\!%p%{T}.bat"
echo %time%> "C:\PointBat\!%p%DTd.txt"
if exist "C:\PointBat\%p%.txt" del "C:\PointBat\%p%.txt" > nul
::----------- DEBUT -----------
echo.
echo Pour jouer, il suffit de taper la lettre correspondante
echo.
echo Gauche = L
echo Droite = S
echo.
echo Tu as 3 secondes pour taper ta r?ponse
echo.
pause
%comspec% /e:2048/c for %%v in (1 2) do prompt set time$q$d $t$_ | find/v "$" > "C:\PointBat\!%p%{T}.bat"
call "C:\PointBat\!%p%{T}.bat"
echo %time%> "C:\PointBat\!%p%J1.txt"
ebut2
%comspec% /e:2048/c for %%v in (1 2) do prompt set time$q$d $t$_ | find/v "$" > "C:\PointBat\!%p%{T}.bat"
call "C:\PointBat\!%p%{T}.bat"
echo %time%> "C:\PointBat\!%p%JVerif.txt"
:jeu1
find ",1" < "C:\PointBat\!%p%JVerif.txt" > nul
if errorlevel 1 goto jeu2
choice Gauche /n /csl /ts,3
if errorlevel 07h goto erreur
if errorlevel 2 goto debut2
if errorlevel 1 goto finj
goto finj
:jeu2
find ",2" < "C:\PointBat\!%p%JVerif.txt" > nul
if errorlevel 1 goto jeu3
choice Droite /n /cls /tl,3
if errorlevel 07h goto erreur
if errorlevel 2 goto debut2
if errorlevel 1 goto finj
goto finj
:jeu3
find ",3" < "C:\PointBat\!%p%JVerif.txt" > nul
if errorlevel 1 goto jeu4
choice Gauche /n /csl /ts,3
if errorlevel 07h goto erreur
if errorlevel 2 goto debut2
if errorlevel 1 goto finj
goto finj
:jeu4
find ",4" < "C:\PointBat\!%p%JVerif.txt" > nul
if errorlevel 1 goto jeu5
choice Droite /n /cls /tl,3
if errorlevel 07h goto erreur
if errorlevel 2 goto debut2
if errorlevel 1 goto finj
goto finj
:jeu5
find ",5" < "C:\PointBat\!%p%JVerif.txt" > nul
if errorlevel 1 goto jeu6
choice Gauche /n /csl /ts,3
if errorlevel 07h goto erreur
if errorlevel 2 goto debut2
if errorlevel 1 goto finj
goto finj
:jeu6
find ",6" < "C:\PointBat\!%p%JVerif.txt" > nul
if errorlevel 1 goto jeu7
choice Droite /n /cls /tl,3
if errorlevel 07h goto erreur
if errorlevel 2 goto debut2
if errorlevel 1 goto finj
goto finj
:jeu7
find ",7" < "C:\PointBat\!%p%JVerif.txt" > nul
if errorlevel 1 goto jeu8
choice Gauche /n /csl /ts,3
if errorlevel 07h goto erreur
if errorlevel 2 goto debut2
if errorlevel 1 goto finj
goto finj
:jeu8
find ",8" < "C:\PointBat\!%p%JVerif.txt" > nul
if errorlevel 1 goto jeu9
choice Droite /n /cls /tl,3
if errorlevel 07h goto erreur
if errorlevel 2 goto debut2
if errorlevel 1 goto finj
goto finj
:jeu9
find ",9" < "C:\PointBat\!%p%JVerif.txt" > nul
if errorlevel 1 goto jeu0
choice Gauche /n /csl /ts,3
if errorlevel 07h goto erreur
if errorlevel 2 goto debut2
if errorlevel 1 goto finj
goto finj
:jeu0
choice Droite /n /cls /tl,3
if errorlevel 07h goto erreur
if errorlevel 2 goto debut2
if errorlevel 1 goto finj
goto finj
:erreur
echo erreur
pause
:finj
echo.
echo P E R D U
echo.
echo Temps pass? au jeu qui tue
echo.
type "C:\PointBat\!%p%J1.txt"
%comspec% /e:2048/c for %%v in (1 2) do prompt set time$q$d $t$_ | find/v "$" > "C:\PointBat\!%p%{T}.bat"
call "C:\PointBat\!%p%{T}.bat"
echo %time%
echo.
pause
::----------- FIN -----------
:fin
mode con: lines=25
cls
echo.
echo.
echo Merci d'utiliser le programme "%p%.bat" 1.0
echo cr?? par SebastienG
echo.
echo.
echo.
echo.
echo.
echo E-Mail : PointBat@yahoo.com
echo.
echo URL : http://www.pointbat.be.tf/
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
%comspec% /e:2048/c for %%v in (1 2) do prompt set time$q$d $t$_ | find/v "$"> "C:\PointBat\!%p%{T}.bat"
call "C:\PointBat\!%p%{T}.bat"
echo %time%> "C:\PointBat\!%p%DTf.txt"
set time=
echo D?but du programme : >> "C:\PointBat\!%p%DTfin.txt"
type "C:\PointBat\!%p%DTd.txt" >> "C:\PointBat\!%p%DTfin.txt"
echo Fin du programme : >> "C:\PointBat\!%p%DTfin.txt"
type "C:\PointBat\!%p%DTf.txt" >> "C:\PointBat\!%p%DTfin.txt"
type "C:\PointBat\!%p%DTfin.txt"
echo.
choice Veux-tu voir le fichier log "C:\PointBat\%p%.txt" [O,N]? /n /c:NO /tn,9
if errorlevel 2 "C:\Program Files\NoteTab Light\Notetab" "C:\PointBat\%p%.txt"
echo. >> "C:\PointBat\LogProgramme.txt"
echo %p%.bat >> "C:\PointBat\LogProgramme.txt"
find "," < "C:\PointBat\!%p%DTfin.txt">> "C:\PointBat\LogProgramme.txt"
echo. >> "C:\PointBat\%p%.txt"
type "C:\PointBat\!%p%DTfin.txt" >> "C:\PointBat\%p%.txt"
if exist "C:\PointBat\!%p%*.*" del "C:\PointBat\!%p%*.*" > nul
:finfin
Marsh Posté le 17-04-2001 à 17:59:53
bon ,eh bien il est 18 heures,tout est dit..on peut aller boire une bière....a vot'santé
euh GOTO çà veut dire quoi?
Marsh Posté le 17-04-2001 à 13:34:26
J'ai la commande choice et dans l'aide on me dit que si on tape une touche non-demandée, il renvoit un caractère BEL ou 07h.
Dans mon if errorlevel qu'est ce que je dois mettre ???
IF ERRORLEVEL BEL GOTO fin ???