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

 

promptTexte optionnel qui s'affiche en tant qu'invite.
varnameLa variable qui contiendra la frappe de l'utilisateur.
waitTemps d'attente pour une frappe, en secondes

 

/C

Effacer le tampon

/P

Mot de passe

/D

Chiffres uniquement

/T

Compte à rebours

/K

frappes de touches valides

/W

Attente

/M

Boutons de la souris

/X

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 :

 

/=Affiche la boîte de dialogue de la commande INKEY pour vous aider à définir les options de la ligne de commande. L'option /= peut être placée n'importe où sur la ligne ; les options supplémentaires définiront les champs appropriés dans la boîte de dialogue de la commande.

 

/CEfface la mémoire tampon du clavier avant qu'INKEY n'accepte les frappes. Si vous utilisez cette option, INKEY ignorera toutes les frappes que vous tapez, accidentellement ou intentionnellement, avant qu'il ne soit prêt à accepter des données. Vous pouvez utiliser l'option /C seule si vous souhaitez effacer la mémoire tampon du clavier sans définir de variable.

 

/DN'accepte que les chiffres de 0 à 9.

 

/K "keys"Spécifie les touches autorisées. La liste des frappes valides doit être placée entre guillemets. Pour les touches alphabétiques, le test de validité n'est pas sensible à la casse. Vous pouvez spécifier des touches étendues en plaçant leur nom entre crochets (entre guillemets), par exemple :

 

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.

 

/MAccepter 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).

 

/PEmpêche INKEY de faire écho au caractère.

 

/TAffiche un compte à rebours (/Wn est également nécessaire).

 

/WDélai d'attente, en secondes, pour une réponse. Si aucune touche n'est entrée à la fin de la période d'attente, INKEY revient avec la variable inchangée. Cela vous permet de poursuivre le fichier batch si l'utilisateur ne répond pas dans un délai donné. Vous pouvez spécif ier/W0 pour revenir immédiatement si aucune touche n'est en attente dans la mémoire tampon du clavier .Si /W est spécifié, les boutons de la souris sont ignorés.

 

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

 

/XEmpêche INKEY d'afficher un retour chariot et un saut de ligne après la saisie de l'utilisateur.