| Objet : | Obtenir une seule frappe de l'utilisateur et la stocker dans une variable d'environnement ou un tableau. |
| Format : | INKEY [/= /C /D /K"keys" /P /M /T /Wn /X] [prompt] %%varname |
| prompt | Texte optionnel qui s'affiche en tant qu'invite. |
| varname | La variable qui contiendra la frappe de l'utilisateur. |
| wait | Temps d'attente pour une frappe, en secondes |
Effacer le tampon |
Mot de passe |
||
Chiffres uniquement |
Compte à rebours |
||
frappes de touches valides |
Attente |
||
Boutons de la souris |
pas de retour chariot |
Voir aussi : INPUT.
Utilisation :
INKEY affiche éventuellement une invite, puis attend pendant un temps spécifié (ou indéfiniment) la frappe d'une touche, et place cette frappe dans une variable d'environnement ou de tableau. Elle est normalement utilisée dans les fichiers batch et les alias pour obtenir un choix de menu ou une autre entrée à touche unique. Avec la commande INPUT, INKEY permet une grande flexibilité dans la lecture des données à l'intérieur d'un fichier batch ou d'un alias.
Si l'invite est incluse dans une commande INKEY, elle s'affiche pendant que INKEY attend la saisie.
La commande suivante demande un caractère et le stocke dans la variable NUM:
inkey /D Enter a number from 1 to 9: %%num
INKEY lit l'entrée standard pour la frappe, et accepte donc les frappes provenant d'un fichier redirigé ou de KEYSTACK. Vous pouvez fournir une liste de frappes valides avec l' option /K.
Numeric input may be entered in either decimal format (a sequence of 0-9 digits) or in hexadecimal format ("0x" followed by a sequence of 0-F hex digits).
Une frappe standard est stockée directement dans la variable d'environnement. Une frappe étendue (par exemple, une touche de fonction ou une touche de curseur) est stockée sous la forme d'une chaîne de caractères, composée d'un @initial , suivi de son code de balayage sous forme de nombre décimal, par exemple, la touche F1 est stockée sous la forme @59. La toucheEntrée est stockée en tant que touche étendue @28. Voir ASCII, codes de touches et commandes ANSI X3.64 pour les codes de balayage.
Lorsque l' option /M permet la reconnaissance des boutons de la souris (et que /W n'est pas spécifié), la variable est définie comme un caractère unique avec l'un des codes ci-dessous :
bouton |
code |
gauche |
240 |
milieu |
498 |
droite |
497 |
Vous pouvez obtenir la position à l'écran du dernier clic de souris avec les variables internes_xmouse et _ymouse.
Pour tester unevaleur non imprimable renvoyée par INKEY, utilisez la fonction @ASCII pour obtenir la valeur numérique de la touche, ou convertissez la valeur attendue du code en code à l'aide de @CHAR. Par exemple, pour tester Esc, qui a une valeurASCII de 27 ou un bouton gauche de la souris :
inkey Enter a key: %%key
if "%@ascii[%key]" == "27" echo Esc pressed
if %key EQ %@char[240] echo Left mouse button clicked
Si vous appuyez sur Ctrl-C ou Ctrl-Break alors que INKEY attend une touche, l'exécution d'un alias sera interrompue et l'exécution d'un fichier batch sera suspendue pendant que l'on vous demandera si vous voulez annuler le travail batch. Un fichier batch peut gérer Ctrl-C et Ctrl-Break avec la commande ON BREAK.
Si vous n'entrez aucun argument, INKEY affichera sa boîte de dialogue de commande.
INKEY travaille dans la fenêtre de la ligne de commande. Si vous préférez utiliser une boîte de dialogue pour les entrées utilisateur, consultez les commandes MSGBOX et QUERYBOX.
Options :
inkey /k "ab[Ctrl-F9]" Saisir A, B, Ctrl-F9 %%var
Voir Clés et noms de clés pour une liste complète des noms de clés que vous pouvez utiliser entre crochets et une description du format des noms de clés.
Si une touche non valide est saisie, TCC fait écho à la frappe si possible, émet un signal sonore, fait reculer le curseur d'un caractère et attend une autre frappe.
| /M | Accepter les clics du bouton de la souris. Cette fonctionn'estactivée que si l'édition rapide de Windows est désactivée (espace alt -> Propriétés -> Options). |
Par exemple, le fragment de fichier batch suivant attend jusqu'à 10 secondes un caractère, puis vérifie si un "Y" a été saisi :
set netmon=N
inkey /K"YN" /w10 Network monitor (Y/N)? %%netmon
iff "%netmon" == "Y" then
rem Commands to load the monitor program
endiff