| 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 |
| prompt | Optionaler Text, der als Eingabeaufforderung angezeigt wird. |
| varname | Die Variable, die den Tastendruck des Benutzers speichert. |
| wait | Wartezeitauf einen Tastendruck, in Sekunden |
Puffer löschen |
Kennwort |
||
Nur Ziffern |
Countdown-Timer |
||
gültige Tastenanschläge |
Warten |
||
Maustasten |
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:
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.
| /M | Maustastenklicks akzeptieren. Dies istnur aktiviert, wenn die Schnellbearbeitung von Windows deaktiviert ist (Alt-Leertaste -> Eigenschaften -> Optionen). |
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