CHOICE Befehl für Auswahl mit Tasteneingabe Verfasst am: 20.06.2009, 07:50
Seit MS-DOS Version 6.0 wird ein Hilfsprogramm mitgeliefert, das
in dieser oder aehnlicher Form (meist unter anderem Namen) bereits
seit etlichen Jahren im Umlauf ist: CHOICE ("Auswahl").
CHOICE haelt den Ablauf an und wartet auf eine Tasten-Eingabe,
wobei die erlaubten Tasten im CHOICE-Befehl vorgegeben werden.
Entsprechend der gedrueckten Taste kann dann per Errorlevel-
Abfrage verzweigt werden. Als Option gibt's die Moeglichkeit,
den Ablauf nach nn Sekunden automatisch fortzusetzen.
Syntax (Quote aus DOS-Hilfe, deutsche Version) -------------------
CHOICE [/C[:]Tasten] [/N] [/S] [/T[:]c,nn] [Text]
/C[:]Tasten Angabe der zul„ssigen Tasten. Standard ist JN.
/N Keine Anzeige eines ?-Zeichens am Ende der Meldung.
/S Groá-/Kleinschreibung fr Tasten wird beachtet.
/T[:]c,nn Nach nn Sekunden wird Standardauswahl c ausgefhrt.
Text Meldung, die angezeigt wird.
ERRORLEVEL ist auf die Position der gedrckten Taste aus der
Tastenauswahl gesetzt.
Beispiel: CHOICE /C:JN weiter
if errorlevel 2 goto ENDE
DOS gibt folgenden Prompt aus:
weiter [J,N]?
^^^^^^-------- wird gem. /C Angaben eingesetzt
Da "J,N" Standard ist, kann in diesem Falle die Option /C auch
weggelassen werden. Je nach gedrueckter Taste wird der Errorlevel
entsprechend der Position (1...) in der /C Option gesetzt. Mit
"N" wird also im obigen Beispiel Errorlevel 2 gesetzt.
Errorlevel 0 wird uebrigens nie zurueckgegeben.
Bei Syntax-Fehlern wird ERRORLEVEL 255 zurueckgegeben, und der
Ablauf wird ohne Pause fortgesetzt. Also: entweder zusaetzlich
Errorlevel 255 abfragen oder keine Fehler machen!
Weitere Erlaeuterungen:
/C[:]Tasten
Die Zahl der zugelassenen Tasten ist nicht begrenzt. Es koennen
aber nur ASCII-Zeichen als Tasten angegeben werden, ohne Trennzeichen
dazwischen. Beispiel:
CHOICE /C:NWA nochmal, weiter oder abbrechen
Control-Codes sind moeglich, wenn sie als Zeichen dargestellt
werden koennen, z.B. ESCAPE wie bei den ANSI-Sequenzen. ENTER und
Leertaste sind nicht verwendbar.
Text
/N
Was nicht mit einem Schraegstrich beginnt, wird als Text (Prompt)
auf dem Bildschirm ausgegeben. Natuerlich darf der Text keine
Schraegstriche enthalten.
Die zulaessigen Zeichen in eckigen Klammern (plus Fragezeichen)
werden automatisch hinzugefuegt, sofern nicht Option /N angegeben
wird. (Option /N empfiehlt sich z.B. bei Verwendung von ESC.)
/T[:]c,nn
Nach nn Sekunden (maximal zweistellige Angabe!) wird automatisch
fortgesetzt. Die Angabe c dient dazu, den Errorlevel so zu setzen,
als wuerde diese Taste gedrueckt. Beispiel:
CHOICE Weiter suchen /T:N,5
Menues
Mit ECHO-Zeilen kann zuvor ein Menue ausgegeben werden, z.B.:
echo 1 Mailer
echo 2 Editor
echo 3 Packer
echo 4 Terminal
echo.
choice Auswahl (Ziffer), ESC=Ende /C:1234# /N
:: hier ESC-Code (27) ----------------^
Durch zusaetzliche Rahmen und ANSI-Farben laesst sich damit ein
ganz passables Bild produzieren. Auch der Text in der CHOICE-Zeile
darf ANSI-Sequenzen enthalten!
ENTER-Taste als Default
Mit der /C Option laesst sich zwar die ENTER-Taste nicht angeben,
aber man kann die ENTER-Taste per ANSI-Sequenz voruebergehend umfunktionieren.
Beispiel (# fuer ESC-Code):
echo #[13;"J"p
CHOICE /C:JN weiter (ENTER)
echo #[13p
Damit gibt die ENTER-Taste voruebergehend den Buchstaben "J" ab.
Vorsicht! Falls mit Control+C abgebrochen wird, gibt es keine
ENTER-Taste mehr! (auch ALT + Ziffern-Eingabe hilft nichts). Es
empfiehlt sich daher, fuer den Notfall zuvor eine Funktionstaste
mit dem ENTER-Code zu belegen (z.B. F12: #[0;134;13p). _________________