Tester le caractère saisi au clavier
Salut,
La commande "PAUSE" permet de faire une <<PAUSE :mouarf:>> qui sera annulé par la pression de n'importe quelle touche, malheurseusement cette commande ne renvoie pas d'ERRORLEVEL
La commande "SET/P PAUSE=" permet aussi de faire une <<PAUSE>> qui ne sera annulé que lorsqu'on appuye sur la touche <<ENTER>> et va renvoyer un "0" si on saisi une chaine de caractères (ou un espace), sinon c'est "1" On pourra alors
tester si l'utilisateur à saisie quelque chose ou pas
Code:
1 2 3 4
|
echo %ERRORLEVEL%
set /p PAUSE=
echo %ERRORLEVEL% |
cette méthode permet de tester si la variable "PAUSE" est definie ou pas mais ne permet pas de tester
la touche saisie par l'utilisateur.
cette formule "SET/P=" va fixer l'ERRORLEVEL à "1" car la syntaxe est incorrecte mais ça ne retournera pas de message d'erreur.
Code:
1 2 3
|
SET/P=
echo %ERRORLEVEL% |
est ce qu'on peux tester le caractère saisi au clavier ?
Oui, c'est possible, en utilisant un petit utilitaire "reply.com".
En réalite reply.com fixe un ERRORLEVEL égale au caractère ASCII associé à la touche entrer par l'utilisateur.
mais on peux aussi "embarquer" cette utilitaire dans notre fichier de commandes.
voici quelques ERRORLEVEL renvoyer par "reply" :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
F1=59 A=97 M=109 Y=121 Flêche-Haut=72
F2=60 B=98 N=110 Z=122 Flêche-bas=80
F3=61 C=99 O=111 Flêche-gauche=75
F4=62 D=100 P=112 Flêche-droite=77
F5=63 E=101 Q=113 ENTER=13
F6=64 F=102 R=114 EChap=27
F7=65 G=103 S=115 Espace=32
F8=66 H=104 T=116 TAB=9
F9=67 I=105 U=117 BKSP=8
F10=68 J=106 V=118
F11=133 K=107 W=119
F12=134 L=108 X=120 |
et voici un petit exemple:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
|
@echo off & goto:skip
n k.com
e 0000 4D 5A 2E 00 01 00 00 00 02 00 00 10 FF FF F0 FF
e 0010 FE FF 00 00 00 01 F0 FF 1C 00 00 00 00 00 00 00
e 0020 B4 08 CD 21 3C 00 75 02 CD 21 B4 4C CD 21
rcx
002E
w0
q
:skip
debug < "%~f0" >nul
echo.
echo DEMO: Pressez une touche de 0-9
echo.
:: on appel k.com l'executable créer par "debug"
k
if %errorlevel%==48 (set b=0.........)
if %errorlevel%==49 (set b=.1........)
if %errorlevel%==50 (set b=..2.......)
if %errorlevel%==51 (set b=...3......)
if %errorlevel%==52 (set b=....4.....)
if %errorlevel%==53 (set b=.....5....)
if %errorlevel%==54 (set b=......6...)
if %errorlevel%==55 (set b=.......7..)
if %errorlevel%==56 (set b=........8.)
if %errorlevel%==57 (set b=.........9)
::
echo Touche: %b%
del k.com
set/p= & exit /b |