Zweck:Ermittelt einen einzelnen Tastendruck des Benutzers und speichert ihn in einer Umgebungs- oder Array-Variablen

 

Format:INKEY [/= /C /D /K"keys" /P /M /T /Wn /X] [prompt] %%varname

 

promptOptionaler Text, der als Eingabeaufforderung angezeigt wird.
varnameDie Variable, die den Tastendruck des Benutzers speichert.
waitWartezeitauf einen Tastendruck, in Sekunden

 

/C

Puffer löschen

/P

Kennwort

/D

Nur Ziffern

/T

Countdown-Timer

/K

gültige Tastenanschläge

/W

Warten

/M

Maustasten

/X

kein Wagenrücklauf

 

Siehe auch: INPUT.

 

Verwendung:

 

INKEY zeigt optional eine Eingabeaufforderung an, wartet dann eine bestimmte Zeit (oder unbegrenzt) auf einen Tastendruck und speichert den Tastendruck in einer Umgebungs- oder  Array-Variablen. Er wird normalerweise in Batch-Dateien und Aliasen verwendet, um eine Menüauswahl oder eine andere Tasteneingabe zu erhalten. Zusammen mit dem  INPUT-Befehl ermöglicht INKEY eine große Flexibilität beim Lesen von Eingaben aus einer Batch-Datei oder einem Alias.

 

Wenn  in einem INKEY-Befehl eine Eingabeaufforderung enthalten ist, wird diese angezeigt, während INKEY auf eine Eingabe wartet.

 

Der folgende Befehl fragt nach einem Zeichen und speichert es in der Variablen NUM:

 

inkey /D Geben Sie eine Zahl von 1 bis 9 ein: %%num

 

INKEY liest die Standardeingabe für den Tastenanschlag, akzeptiert also auch Tastenanschläge aus einer umgeleiteten Datei oder aus KEYSTACK.  Mit der  Option /K können Sie eine Liste gültiger Tastenanschläge angeben .

 

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

 

Ein Standard-Tastendruck wird direkt in der Umgebungsvariablen gespeichert. Ein erweiterter Tastendruck (z. B. eine Funktionstaste oder eine Cursortaste) wird als Zeichenkette gespeichert, bestehend aus einem führenden @, gefolgt von seinem Scan-Code als Dezimalzahl, z. B. wird  die  Taste F1 als @59 gespeichert .  Die  Eingabetaste wird als erweiterter Tastendruck @28 gespeichert. Siehe ASCII, Tastencodes und ANSI X3.64-Befehle für Scan-Codes.

 

Wenn die  Option /M die Erkennung von Maustasten aktiviert (und /W nicht angegeben ist), wird die Variable auf ein einzelnes Zeichen mit einem der unten aufgeführten Codes gesetzt:

 

Taste

Code

links

240

Mitte

498

rechts

497

 

Die Bildschirmposition des letzten Mausklicks können Sie mit den  internen Variablen_xmouse und _ymouse ermitteln.

 

Um auf einen nicht druckbaren Wert zu testen, der von INKEY zurückgegeben wird, verwenden Sie die  Funktion @ASCII, um den numerischen Wert der Taste zu erhalten, oder wandeln Sie den erwarteten Wert des Codes mit @CHAR in einen Code um .  Um beispielsweise auf Esc mit dem  ASCII-Wert 27 oder auf die linke Maustaste zu testen :

 

inkey Enter a key: %%key

if "%@ascii[%key]" == "27" echo Esc pressed

if %key EQ %@char[240] echo Left mouse button clicked

 

Wenn Sie Strg-C oder Strg-Break drücken, während INKEY auf eine Taste wartet, wird die Ausführung eines Alias beendet, und die Ausführung einer Batchdatei wird unterbrochen, während Sie gefragt werden, ob Sie den Batchjob abbrechen möchten. Eine Batch-Datei kann Ctrl-C und Ctrl-Break mit dem ON BREAK-Befehl behandeln .

 

Wenn Sie keine Argumente eingeben, zeigt INKEY seinen Befehlsdialog an.

 

INKEY arbeitet innerhalb des Kommandozeilenfensters. Wenn Sie es vorziehen, einen Dialog für Benutzereingaben zu verwenden, lesen Sie die Befehle MSGBOX und QUERYBOX.

 

Optionen:

 

/=Zeigt den INKEY-Befehlsdialog an, um Ihnen beim Einstellen der Kommandozeilenoptionen zu helfen. Die Option /= kann an einer beliebigen Stelle in der Zeile stehen; zusätzliche Optionen setzen die entsprechenden Felder im Befehlsdialog.

 

/CLöscht den Tastaturpuffer, bevor INKEY Tastatureingaben akzeptiert. Wenn Sie diese Option verwenden, ignoriert INKEY alle Tastenanschläge, die Sie versehentlich oder absichtlich eingeben, bevor es bereit ist, Eingaben zu akzeptieren. Sie können die Option /C allein verwenden, wenn Sie den Tastaturpuffer löschen wollen, ohne eine Variable zu setzen.

 

/DAkzeptiert nur Zahlen von 0 bis 9.

 

/K "keys"Legt die zulässigen Tastenanschläge fest. Die Liste der zulässigen Tastenanschläge sollte in doppelte Anführungszeichen gesetzt werden. Bei alphabetischen Tasten wird bei der Prüfung der Gültigkeit nicht zwischen Groß- und Kleinschreibung unterschieden. Sie können erweiterte Tasten angeben, indem Sie deren Namen in eckige Klammern (innerhalb der Anführungszeichen) einschließen, z. B:

 

inkey /k "ab[Strg-F9]" A, B, Strg-F9 eingeben %%var

 

Unter Tasten und Tastennamen finden Sie eine vollständige Liste der Tastennamen, die Sie innerhalb der eckigen Klammern verwenden können, sowie eine Beschreibung des Formats der Tastennamen.

 

Wenn ein ungültiger Tastendruck eingegeben wird, TCC den Tastendruck, wenn möglich, als Echo aus, gibt einen Piepton aus, bewegt den Cursor um ein Zeichen zurück und wartet auf einen weiteren Tastendruck.

 

/MMaustastenklicks akzeptieren. Dies istnur aktiviert, wenn die Schnellbearbeitung von Windows deaktiviert ist (Alt-Leertaste -> Eigenschaften -> Optionen).

 

/PVerhindert, dass INKEY das Zeichen als Echo ausgibt.

 

/TAnzeige eines Countdown-Timers (/Wn ist ebenfalls erforderlich).

 

/WWartezeit in Sekunden, um auf eine Antwort zu warten. Wenn bis zum Ende der Timeout-Periode kein Tastendruck eingegeben wird, kehrt INKEY mit unveränderter Variable zurück. Auf diese Weise können Sie die Batchdatei fortsetzen, wenn der Benutzer nicht innerhalb einer bestimmten Zeitspanne antwortet. Sie können /W0angeben , um sofort zurückzukehren, wenn keine Tasten im Tastaturpuffer warten. Wenn /W angegeben wird, werden Maustasten ignoriert.

 

Das folgende Batchdateifragment wartet beispielsweise bis zu 10 Sekunden auf ein Zeichen und prüft dann, ob ein "Y" eingegeben wurde:

 

set netmon=N

inkey /K "YN" /w10 Netzwerküberwachung (Y/N)? %%netmon

iff "%netmon" == "Y" then

rem Befehle zum Laden des Monitorprogramms

endiff

 

/XVerhindert, dass INKEY nach der Eingabe des Benutzers einen Wagenrücklauf und einen Zeilenvorschub anzeigt.