MS-DOS Forum

MS-DOS Forum
Anleitungen, Referenz aller DOS Befehle, Batch Dateien
 
RegistrierenRegistrieren  LoginLogin

Neues Thema eröffnen   Neue Antwort erstellen    MS-DOS Forum Foren-Übersicht -> Batch Programmierung
Autor
Nachricht
matthias





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).
_________________
 
Neues Thema eröffnen   Neue Antwort erstellen    MS-DOS Forum Foren-Übersicht -> Batch Programmierung

Tags: choice, dos, befehl, enter, tasten

 
 Verwandte Themen   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Suchen von Text mit dem Befehl find 990 22.08.2009, 06:18
Keine neuen Beiträge Steuern der Bildschirmanzeige mit dem Befehl more 667 15.08.2009, 09:37
Keine neuen Beiträge Umleiten der Eingabe für einen Befehl 698 02.08.2009, 18:14
Keine neuen Beiträge Der Befehl Restore funktioniert nicht 1216 08.12.2008, 08:39
Keine neuen Beiträge Der Befehl Undelete funktioniert nicht 1929 01.12.2008, 09:32
 



[ Time: 0.1494s ][ Queries: 59 (0.0186s) ][ GZIP on - Debug on ]