Menüauswahl
Menüauswahl in Batch ohne Choice
Hallo ich hab noch nicht soviel Ahnung davon, bin ein Lehrling. Da habe ich eine Menüauswahl mit Choice geschrieben. Nun möchte ich sie in eine ohne Choice umwandeln. Wie kann ich das tun?
Danke für eure Hilfe, Kristina
@echo off
:START
Echo.
Echo.
Echo Menu
Echo.
Echo.
Echo 1 - Explorer
Echo.
Echo 2 - Msn
Echo.
Echo 3 - Backup
Echo.
Echo 4 - Beenden
Echo.
REM zeigt das Menü an
set /p choice=Bitte treffe deine Auswahl_
REM eingabe der Variable
if %choice% == 1 goto EXPLORER
if %choice% == 2 goto MSN
if %choice% == 3 goto BACKUP
if %choice% == 4 goto QUIT
if not %choice* == 1 goto RESTART
if not %choice* == 2 goto RESTART
if not %choice* == 3 goto RESTART
if not %choice* == 4 goto RESTART
REM setzt die Bedinung und holt die Variable
:EXPLORER
explorer.exe
goto START
REM definiert die Variable
:MSN
C:\Programme\Messenger\msmsgs.exe
goto START
REM definiert die Variable
:BACKUP
backup.bat
goto START
REM definiert die Variable
:RESTART
set /p _ok=Falsche Eingabe! Bitte Treffe deine Auswahl!
goto START
REM definiert die Variable
:QUIT
exit
REM definiert die Variable
Hallo ich hab noch nicht soviel Ahnung davon, bin ein Lehrling. Da habe ich eine Menüauswahl mit Choice geschrieben. Nun möchte ich sie in eine ohne Choice umwandeln. Wie kann ich das tun?
Danke für eure Hilfe, Kristina
@echo off
:START
Echo.
Echo.
Echo Menu
Echo.
Echo.
Echo 1 - Explorer
Echo.
Echo 2 - Msn
Echo.
Echo 3 - Backup
Echo.
Echo 4 - Beenden
Echo.
REM zeigt das Menü an
set /p choice=Bitte treffe deine Auswahl_
REM eingabe der Variable
if %choice% == 1 goto EXPLORER
if %choice% == 2 goto MSN
if %choice% == 3 goto BACKUP
if %choice% == 4 goto QUIT
if not %choice* == 1 goto RESTART
if not %choice* == 2 goto RESTART
if not %choice* == 3 goto RESTART
if not %choice* == 4 goto RESTART
REM setzt die Bedinung und holt die Variable
:EXPLORER
explorer.exe
goto START
REM definiert die Variable
:MSN
C:\Programme\Messenger\msmsgs.exe
goto START
REM definiert die Variable
:BACKUP
backup.bat
goto START
REM definiert die Variable
:RESTART
set /p _ok=Falsche Eingabe! Bitte Treffe deine Auswahl!
goto START
REM definiert die Variable
:QUIT
exit
REM definiert die Variable
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 51630
Url: https://administrator.de/contentid/51630
Ausgedruckt am: 22.11.2024 um 22:11 Uhr
18 Kommentare
Neuester Kommentar
Hallo Kristina,
choice ist nur der Name der Variable. Du kannst anstatt "choice" auch "auswahl" oder "pfannkuchen" nehmen.
Aber ein Tip:
Anstatt:
if %choice% == 1 goto EXPLORER
if %choice% == 2 goto MSN
if %choice% == 3 goto BACKUP
if %choice% == 4 goto QUIT
if not %choice* == 1 goto RESTART
if not %choice* == 2 goto RESTART
if not %choice* == 3 goto RESTART
if not %choice* == 4 goto RESTART
Kannst du auch
if %choice% == 1 goto EXPLORER
if %choice% == 2 goto MSN
if %choice% == 3 goto BACKUP
if %choice% == 4 goto QUIT
goto Restart
eintragen. Das Script prüft dann erst, ob die Variable auf eine Anweisung zutrifft, wenn nicht, dann springt es automatisch zum Restart. Somit sparst du dir die if not Befehle.
Gruß
Micha
choice ist nur der Name der Variable. Du kannst anstatt "choice" auch "auswahl" oder "pfannkuchen" nehmen.
Aber ein Tip:
Anstatt:
if %choice% == 1 goto EXPLORER
if %choice% == 2 goto MSN
if %choice% == 3 goto BACKUP
if %choice% == 4 goto QUIT
if not %choice* == 1 goto RESTART
if not %choice* == 2 goto RESTART
if not %choice* == 3 goto RESTART
if not %choice* == 4 goto RESTART
Kannst du auch
if %choice% == 1 goto EXPLORER
if %choice% == 2 goto MSN
if %choice% == 3 goto BACKUP
if %choice% == 4 goto QUIT
goto Restart
eintragen. Das Script prüft dann erst, ob die Variable auf eine Anweisung zutrifft, wenn nicht, dann springt es automatisch zum Restart. Somit sparst du dir die if not Befehle.
Gruß
Micha
hi,
was soll das sein? ich kenn nur 2 befehle in einer batch datei die anhalten und eine weitere eingabe brauchen bzw ermöglichen, und das ist ja zwingen notwenig für eine menüauswahl.
pause (>nul)
set /p (..)
ich weiß nicht wie dein lehrmeister sich das vorstellt ...
anderer tipp:
setz bei deinen if befehlen umschlie0ende zeichen auf beiden seiten der doppel gleichheitszeichen zur sicherheit, sonst kann es probleme geben wenn die variable nicht definiert ist.
if (%bla%)==(1) goto...
if [%bla%]==[1] goto...
if "%bla%"=="1" goto...
gruß, Ph
was soll das sein? ich kenn nur 2 befehle in einer batch datei die anhalten und eine weitere eingabe brauchen bzw ermöglichen, und das ist ja zwingen notwenig für eine menüauswahl.
pause (>nul)
set /p (..)
ich weiß nicht wie dein lehrmeister sich das vorstellt ...
anderer tipp:
setz bei deinen if befehlen umschlie0ende zeichen auf beiden seiten der doppel gleichheitszeichen zur sicherheit, sonst kann es probleme geben wenn die variable nicht definiert ist.
if (%bla%)==(1) goto...
if [%bla%]==[1] goto...
if "%bla%"=="1" goto...
gruß, Ph
Moin Butterblume,
willkommen im Forum und Glückwunsch nachträglich zum Geburtstag.
Ich denke, bei der Aufgabe Deines "Lehrmeisters" (WTF ist ein Batch-Lehrmeister? So etwas wie ein Diplom-Klebeband-Abroller?) handelt es sich um ein Missverständnis.
Er ist bestimmt davon ausgegangen, dass Du das Menü bzw die Benutzerinteraktion mit dem unsäglichen "choice.com"-Utility zusammengekittet hast.
Dieses Teil hatte M$ mal mit Windows 3.x oder Win95 oder so unter das leicht zu begeisternde Volk gestreut... aber das Utitlity war selbst M$ zu peinlich und jetzt nicht mehr im Lieferumfang enthalten. AFAIK.
Und das richtige Werkzeug für so eine Benutzerabfrage ist schon, wie auch geschrieben wurde, der Set /p-Befehl.
Hast Du. Also -->Aufgabe fertig, alles prima.
Zu Micha-ITs Kommentar kann ich nur ergänzen, dass richtige Profis ihre Variablen "pancake" nennen und nicht "pfannkuchen".
[In VBS/WSH dann perverserweise wieder "strPancake" oder "cPancake", aber im Batch ist das egal]
Gruss
Biber
willkommen im Forum und Glückwunsch nachträglich zum Geburtstag.
Ich denke, bei der Aufgabe Deines "Lehrmeisters" (WTF ist ein Batch-Lehrmeister? So etwas wie ein Diplom-Klebeband-Abroller?) handelt es sich um ein Missverständnis.
Er ist bestimmt davon ausgegangen, dass Du das Menü bzw die Benutzerinteraktion mit dem unsäglichen "choice.com"-Utility zusammengekittet hast.
Dieses Teil hatte M$ mal mit Windows 3.x oder Win95 oder so unter das leicht zu begeisternde Volk gestreut... aber das Utitlity war selbst M$ zu peinlich und jetzt nicht mehr im Lieferumfang enthalten. AFAIK.
Und das richtige Werkzeug für so eine Benutzerabfrage ist schon, wie auch geschrieben wurde, der Set /p-Befehl.
Hast Du. Also -->Aufgabe fertig, alles prima.
Zu Micha-ITs Kommentar kann ich nur ergänzen, dass richtige Profis ihre Variablen "pancake" nennen und nicht "pfannkuchen".
[In VBS/WSH dann perverserweise wieder "strPancake" oder "cPancake", aber im Batch ist das egal]
Gruss
Biber
Hallo,
Du benötigst bei deinem Script kein coice.com, da du ja mit Variablen arbeitest.
Mit der Zeile "set /p choice=..." weist du der Variable choice (kann wie schon geschrieben einen anderen Namen haben) einen Wert zu, den er dann bei dir Nachfragt.
Dieser Befehl ist in XP schon integriert.
@Biber:
Nutzen Programmierer echt den Namen "pancake" als Name für eine Variable? Hatte "Pfannkuchen" eigentlich nur geschrieben, weil ich grad dran denken musste. ;)
Du benötigst bei deinem Script kein coice.com, da du ja mit Variablen arbeitest.
Mit der Zeile "set /p choice=..." weist du der Variable choice (kann wie schon geschrieben einen anderen Namen haben) einen Wert zu, den er dann bei dir Nachfragt.
Dieser Befehl ist in XP schon integriert.
@Biber:
Nutzen Programmierer echt den Namen "pancake" als Name für eine Variable? Hatte "Pfannkuchen" eigentlich nur geschrieben, weil ich grad dran denken musste. ;)
@11823
Keine Ahnung - ich hatte nur ein einziges Mal direkten Kontakt mit Programmierung.
Und das war 1992, als meine Tante Susi sich einen Videorekorder gekauft hat.
Aber in den Beispiel-Skripts in diesen Tankstellen-PC-Zeitschriften sind die Variablen meistens auf ausländisch.
Sieht auch irgendwie professioneller und teurer aus - führt dann aber zu solchen Missverständnissen wie oben mit dem "Menü ohne Choice".
@Butterblume
Lies bitte nochmal die bisherigen Antworten.
Es ist wirklich nur ein sprachliches Missverständnis.
Ersetze "%choice%" in Deinem Batch durch "%auswahl%", dann hast Du einen Batch ohne Choice.
Gruss
Biber
Nutzen Programmierer echt den Namen "pancake" ..?
Keine Ahnung - ich hatte nur ein einziges Mal direkten Kontakt mit Programmierung.
Und das war 1992, als meine Tante Susi sich einen Videorekorder gekauft hat.
Aber in den Beispiel-Skripts in diesen Tankstellen-PC-Zeitschriften sind die Variablen meistens auf ausländisch.
Sieht auch irgendwie professioneller und teurer aus - führt dann aber zu solchen Missverständnissen wie oben mit dem "Menü ohne Choice".
@Butterblume
Lies bitte nochmal die bisherigen Antworten.
Es ist wirklich nur ein sprachliches Missverständnis.
Ersetze "%choice%" in Deinem Batch durch "%auswahl%", dann hast Du einen Batch ohne Choice.
Gruss
Biber
Moin Butterblume,
Und, wie oben geschrieben, über die hat sogar M$ den Mantel des Schweigens gedeckt und unauffällig weggelassen seit Win2K.
Da kannst Du also davon ausgehen, dass dieses Utilitily nicht wirklich zu den Hilfsbringern gehörte.
Tja, das glaube ich zwar nicht, aber warten wir doch, bis der ehrwürdige Meister aus seiner Meditation erwacht ist und diesen Thread gelesen hat.
Dann kann er Dich und uns alle, die wir vor Neugier fast vergehen, auf andere Wege zum Licht lenken.
Am besten noch heute, sonst bin ich das ganze Wochenende am Grübeln...
Dir auch ein schönes Wochenende
Biber
...aber ob man die datei wirklich braucht oder nicht, weiss ich immer noch nicht...
Nein, die Choice.com wird nicht gebraucht.Und, wie oben geschrieben, über die hat sogar M$ den Mantel des Schweigens gedeckt und unauffällig weggelassen seit Win2K.
Da kannst Du also davon ausgehen, dass dieses Utilitily nicht wirklich zu den Hilfsbringern gehörte.
Ich denke zwar mein lehrmeister hat es andres gemeint, nicht wegen dem wort sondern allgemein eine andere technik zu benutzen...andere struktur...
Tja, das glaube ich zwar nicht, aber warten wir doch, bis der ehrwürdige Meister aus seiner Meditation erwacht ist und diesen Thread gelesen hat.
Dann kann er Dich und uns alle, die wir vor Neugier fast vergehen, auf andere Wege zum Licht lenken.
Am besten noch heute, sonst bin ich das ganze Wochenende am Grübeln...
Dir auch ein schönes Wochenende
Biber
Moin Butterblume,
wenn sich diese Batchdatei auf seinem Rechner nicht ausführen, ist von den 24 möglichen Ursachen die wahrscheinlichste:
Ein/mehrere Befehle werden (von seiner Betriebssystemversion) noch nicht unterstützt.
Das wiederum kann eigentlich nur der "Set /P"-Befehl sein, den es erst seit WinNT/Win2000 (? *nicht sicher bin*) gibt.
Zweitwahrscheinlichste Ursache: Er hat ein "neueres" Betriebssystem als WinNT, aber bei ihm ist statt der "CMD.exe" die "Command.com" als Befehlsinterpreter eingestellt.
Kannst Du überprüfen, wenn Du ein Konsolenfenster geöffnet hast, mit "Set Comspec"
-- bei mir käme heraus:
Wenn dem so sein sollte (also Prä-Windows-2000/Prä-CMD.exe-Umgebung), dann lässt sich in der Tat auch eine andere Technik anwenden...
Dann musstest Du statt (wie oben)
..Statt dessen schreiben:
Und dann jeweils noch eine 1.bat, 2.bat, 3.bat... in Deinem Suchpfad anlegen:
usw.
Aber ist alles Spekulation - wenn ein Batch nicht läuft, dann sollte man/frau ihn halt langsamer laufen lassen, damit Zeit bleibt, die Fehlermeldungen zu lesen.
Dann lässt sich gezielter eingreifen.
Grüße
Biber
wenn sich diese Batchdatei auf seinem Rechner nicht ausführen, ist von den 24 möglichen Ursachen die wahrscheinlichste:
Ein/mehrere Befehle werden (von seiner Betriebssystemversion) noch nicht unterstützt.
Das wiederum kann eigentlich nur der "Set /P"-Befehl sein, den es erst seit WinNT/Win2000 (? *nicht sicher bin*) gibt.
Zweitwahrscheinlichste Ursache: Er hat ein "neueres" Betriebssystem als WinNT, aber bei ihm ist statt der "CMD.exe" die "Command.com" als Befehlsinterpreter eingestellt.
Kannst Du überprüfen, wenn Du ein Konsolenfenster geöffnet hast, mit "Set Comspec"
-- bei mir käme heraus:
set comspec
ComSpec=C:\WINDOWS\system32\cmd.exe
ComSpec=C:\WINDOWS\system32\cmd.exe
Wenn dem so sein sollte (also Prä-Windows-2000/Prä-CMD.exe-Umgebung), dann lässt sich in der Tat auch eine andere Technik anwenden...
Dann musstest Du statt (wie oben)
@echo off
:START
Echo.
Echo.
Echo Menu
Echo.
Echo.
Echo 1 - Explorer
Echo.
Echo 2 - Msn
Echo.
Echo 3 - Backup
Echo.
Echo 4 - Beenden
Echo.
REM zeigt das Menü an
set /p choice=Bitte treffe deine Auswahl_
REM eingabe der Variable
if %choice% == 1 goto EXPLORER
if %choice% == 2 goto MSN
if %choice% == 3 goto BACKUP
if %choice% == 4 goto QUIT
....
REM -------- Menu.bat-------
@echo off
:START
Cls
Echo.
Echo.
Echo Menu
Echo.
Echo.
Echo 1 - Explorer
Echo.
Echo 2 - Msn
Echo.
Echo 3 - Backup
Echo.
Echo 4 - Beenden
Echo.
REM zeigt das Menü an
Und dann jeweils noch eine 1.bat, 2.bat, 3.bat... in Deinem Suchpfad anlegen:
REM ------1.bat
@echo off
explorer.exe
Menu.bat
REM -------2.bat
@echo off
C:\Programme\Messenger\msmsgs.exe
Menu.bat
Aber ist alles Spekulation - wenn ein Batch nicht läuft, dann sollte man/frau ihn halt langsamer laufen lassen, damit Zeit bleibt, die Fehlermeldungen zu lesen.
Dann lässt sich gezielter eingreifen.
Grüße
Biber
Hi,
also wenn er XP hat, dann sollt dieses Script funktionieren.
@echo off
:START
CLS
Echo.
Echo.
Echo Menu
Echo.
Echo.
Echo 1 - Explorer
Echo.
Echo 2 - Msn
Echo.
Echo 3 - Backup
Echo.
Echo 4 - Beenden
Echo.
set /p choice=Bitte treffe deine Auswahl_
if %choice% == 1 goto Explorer
if %choice% == 2 goto MSN
if %choice% == 3 goto Backup
if %choice% == 4 goto Exit
goto Start
:Explorer
explorer.exe
goto START
:MSN
C:\Programme\Messenger\msmsgs.exe
goto START
:Backup
backup.bat
goto START
:Exit
exit
Ansonsten wäre es mal schön zu erfahren, wie dein "Lehrmeister" es gemacht hätte, würde mich dann doch zu sehr interessieren ;).
Gruß
Micha
also wenn er XP hat, dann sollt dieses Script funktionieren.
@echo off
:START
CLS
Echo.
Echo.
Echo Menu
Echo.
Echo.
Echo 1 - Explorer
Echo.
Echo 2 - Msn
Echo.
Echo 3 - Backup
Echo.
Echo 4 - Beenden
Echo.
set /p choice=Bitte treffe deine Auswahl_
if %choice% == 1 goto Explorer
if %choice% == 2 goto MSN
if %choice% == 3 goto Backup
if %choice% == 4 goto Exit
goto Start
:Explorer
explorer.exe
goto START
:MSN
C:\Programme\Messenger\msmsgs.exe
goto START
:Backup
backup.bat
goto START
:Exit
exit
Ansonsten wäre es mal schön zu erfahren, wie dein "Lehrmeister" es gemacht hätte, würde mich dann doch zu sehr interessieren ;).
Gruß
Micha
hi,
cls löscht den inhalt der console
in diesem fall bewirkt das dass bei einer falschen auswahleingabe nicht 2 mal das menu angezeigt wird sondern das erste gelöscht und dann neu geschrieben wird.
Gruß, Ph
Irgednwie verstehe ich nicht ganz mit
cls...bei mir funktionierts nicht...oder ich
mache was falsch...
cls...bei mir funktionierts nicht...oder ich
mache was falsch...
cls löscht den inhalt der console
in diesem fall bewirkt das dass bei einer falschen auswahleingabe nicht 2 mal das menu angezeigt wird sondern das erste gelöscht und dann neu geschrieben wird.
Gruß, Ph