Supportnet / Forum / BS-Sonstige
Auswahlmenü in Batchdatei
Frage
Hi
ich möchte in einer Batchdatei ein Menü programmieren, mit der ich den weiteren Verlauf von irgendetwas auswählen kann. Zum Beispiel als autorun-Datei, dass beim CD-Einlegen ein Menü kommt, in etwa
1. Programm x ausführen
2. CD-Hauptverzeichnis öffnen...
je nachdem was ich auswähle, wird das dann ausgeführt.
In der config.sys kann man so etwas machen, aber weil ich das nicht beim Systemstart machen will, bräuchte ich die Befehle für eine Batchdatei. Ich glaub, ich hab irgendwo so einen Beitrag schon gesehen, aber ich finde ihn nicht... help!
gruß bastian
Antwort 1 von Ultra Violance
Hallo Bastian,
zu diesem Problem brauche ich auch eine Lösung.
Leider geht das mit menuitem nur bei Bootbaren Medium z.B einer Bootable-CD, oder Diskette
MFG
Ultra Violance
zu diesem Problem brauche ich auch eine Lösung.
Leider geht das mit menuitem nur bei Bootbaren Medium z.B einer Bootable-CD, oder Diskette
MFG
Ultra Violance
Antwort 2 von Ultra Violance
Hallo Bastian,
du musst über Choice abfragen gehen Z.b 1. Programm X ausführen (J/N) u.s.w.
Oder du kannst dir was mit Qbasic Programmieren.
MFG:
Ultra.Violance
du musst über Choice abfragen gehen Z.b 1. Programm X ausführen (J/N) u.s.w.
Oder du kannst dir was mit Qbasic Programmieren.
MFG:
Ultra.Violance
Antwort 3 von _gau_
Wie Ultra Violance schon sagte - mit CHOICE.COM geht das.
Folgende Beispiel-Batch würde sowas bewerkstelligen:
-----------------
@echo off
echo.
echo Auswahlmenü
echo.
echo 1. Programm "Notepad" ausführen
echo 2. CD-Hauptverzeichnis öffnen
echo 3. CD-Player starten
echo 4. Menü beenden
echo.
choice /n /c:1234 "Bitte die entsprechende Zahl drücken: "
if errorlevel 4 goto ende
if errorlevel 3 goto play
if errorlevel 2 goto ordner
start notepad.exe
goto ende
:ordner
start e:goto ende
:play
start cdplayer.exe
:ende
----------------
Die ECHO-Zeilen zeigen erstmal die Auswahlmöglichkeiten an.
Der CHOICE-Befehl setzt je nach gedrückter Taste die Variable "Errorlevel" auf den entsprechenden Wert (Zählung von hinten beginnend).
Diese Variable wird dann mit "if" abgefragt und es wird zur entsprechenden Kommandozeile gesprungen (1 kann man weglassen, da es dann einfach in der folgenden Zeile weitergeht).
Dabei MUSS die Abfrage "if errorlevel" in absteigender Reihenfolge sein.
Du kannst dir auch mal mit "choice /?" die möglichen Befehlsschalter anzeigen lassen.
Wenn du dazu noch weitere Erläuterungen brauchst, mußt du noch mal posten...
Steffen
Folgende Beispiel-Batch würde sowas bewerkstelligen:
-----------------
@echo off
echo.
echo Auswahlmenü
echo.
echo 1. Programm "Notepad" ausführen
echo 2. CD-Hauptverzeichnis öffnen
echo 3. CD-Player starten
echo 4. Menü beenden
echo.
choice /n /c:1234 "Bitte die entsprechende Zahl drücken: "
if errorlevel 4 goto ende
if errorlevel 3 goto play
if errorlevel 2 goto ordner
start notepad.exe
goto ende
:ordner
start e:goto ende
:play
start cdplayer.exe
:ende
----------------
Die ECHO-Zeilen zeigen erstmal die Auswahlmöglichkeiten an.
Der CHOICE-Befehl setzt je nach gedrückter Taste die Variable "Errorlevel" auf den entsprechenden Wert (Zählung von hinten beginnend).
Diese Variable wird dann mit "if" abgefragt und es wird zur entsprechenden Kommandozeile gesprungen (1 kann man weglassen, da es dann einfach in der folgenden Zeile weitergeht).
Dabei MUSS die Abfrage "if errorlevel" in absteigender Reihenfolge sein.
Du kannst dir auch mal mit "choice /?" die möglichen Befehlsschalter anzeigen lassen.
Wenn du dazu noch weitere Erläuterungen brauchst, mußt du noch mal posten...
Steffen
Antwort 4 von Joe_69
Hi!
Und wenn Du ganz am Ende noch
CLS
einfügst, dann schliesst sich das DOS-Fenster automatisch, nachdem man eine Auswahltaste gedrückt hat.
mfg Joe
Und wenn Du ganz am Ende noch
CLS
einfügst, dann schliesst sich das DOS-Fenster automatisch, nachdem man eine Auswahltaste gedrückt hat.
mfg Joe
Antwort 5 von _gau_
Irgendwie sind da zwei Zeilen zusammengerutscht...
Soll heißen:
.
.
.
start e:\
goto ende
.
.
.
Steffen
Soll heißen:
.
.
.
start e:\
goto ende
.
.
.
Steffen
Antwort 6 von bastian
Hallo nochmal
hat alles so geklappt, wie ich wollte. Wenn ich aber mit choice eine Abfrage mit ja/nein machen will, wie muss die Batchdatei weitergehen.
z.B
choice Möchten sie weitere Einstellungen machen?
Standardauswahl ist in dem Fall [j/n]
wenn ich dann eingebe
if errorlevel j call batch.bat
heißt es
"j" ist an dieser Stelle syntaktisch nicht verarbeitbar.
Was muss ich dann machen, dass bei j die batch.bat aufgerufen wird, bei n aber der Batch geschlossen wird?
gruß bastian
hat alles so geklappt, wie ich wollte. Wenn ich aber mit choice eine Abfrage mit ja/nein machen will, wie muss die Batchdatei weitergehen.
z.B
choice Möchten sie weitere Einstellungen machen?
Standardauswahl ist in dem Fall [j/n]
wenn ich dann eingebe
if errorlevel j call batch.bat
heißt es
"j" ist an dieser Stelle syntaktisch nicht verarbeitbar.
Was muss ich dann machen, dass bei j die batch.bat aufgerufen wird, bei n aber der Batch geschlossen wird?
gruß bastian
Antwort 7 von _gau_
Hi bastian,
auch bei der Standardauswahl [ja/nein] wird als Errorlevel eine Zahl zurückgegeben und die if-Abfrage lautet immer "if errorlevel Zahl". Dabei ist die erste mögliche Taste die Nummer 1, dann die 2, usw.
Bei [j/n] entspricht also "j" der 1 und "n" der 2.
choice Möchten sie weitere Einstellungen machen?
if errorlevel 2 goto ende
if errorlevel 1 call batch.bat
:ende
Du mußt auch immer zuerst die höheren Rückgabewerte behandeln. Im obigen Beispiel also zuerst die Aktion für Taste "n". Machst du das nicht, dann würde die batch.bat auch bei Wahl von "n" ausgeführt.
Steffen
auch bei der Standardauswahl [ja/nein] wird als Errorlevel eine Zahl zurückgegeben und die if-Abfrage lautet immer "if errorlevel Zahl". Dabei ist die erste mögliche Taste die Nummer 1, dann die 2, usw.
Bei [j/n] entspricht also "j" der 1 und "n" der 2.
choice Möchten sie weitere Einstellungen machen?
if errorlevel 2 goto ende
if errorlevel 1 call batch.bat
:ende
Du mußt auch immer zuerst die höheren Rückgabewerte behandeln. Im obigen Beispiel also zuerst die Aktion für Taste "n". Machst du das nicht, dann würde die batch.bat auch bei Wahl von "n" ausgeführt.
Steffen
Antwort 8 von bastian
Dankeschön, jetzt läuft alles.
Falls übrigens jemand so einen Batch als Autostartdatei fürs CD-Laufwerk verwenden will, sollte er die choice.com mit auf die CD kopieren, da dieser Befehl bei WinXP nicht mehr dabei ist.
gruß bastian
Falls übrigens jemand so einen Batch als Autostartdatei fürs CD-Laufwerk verwenden will, sollte er die choice.com mit auf die CD kopieren, da dieser Befehl bei WinXP nicht mehr dabei ist.
gruß bastian