Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Menüauswahl

Frage Entwicklung Batch & Shell

Mitglied: Butterblume

Butterblume (Level 1) - Jetzt verbinden

14.02.2007, aktualisiert 19.02.2007, 8163 Aufrufe, 18 Kommentare

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
Mitglied: 11823
14.02.2007 um 09:54 Uhr
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
Bitte warten ..
Mitglied: Phlegma
14.02.2007 um 18:41 Uhr
hi,

es ist wahrscheinlich möglich das ganze auf wsh zu schreiben und dann bekommst du buttons ...
wenn du mich fragst dann fragst du da aber den falschen....

gruß, Ph
Bitte warten ..
Mitglied: Butterblume
14.02.2007 um 18:44 Uhr
Mein Lehrmeister hat gesagt, dass es geht ohne den Befehl CHOICE aber eigentlich schon gleich und ohne Buttons...es muss die gleiche Ausgabe kommen...
Bitte warten ..
Mitglied: Phlegma
14.02.2007 um 19:00 Uhr
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
Bitte warten ..
Mitglied: Biber
14.02.2007 um 20:09 Uhr
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
Bitte warten ..
Mitglied: Butterblume
14.02.2007 um 22:10 Uhr
Hallo Biber,

Danke für die Gratulation...

Mein Lehrmeister hat den Befehl von Microsoft bekommen, selber wäre er auch nie draufgekommen...doch er hat sich überlegt, vielleicht schaffe ich das doch (hab erst gesetern damit angefangen, hab nicht wirklich Ahnung von Batch), er wäre eben sehr...hmm...zufrieden?
was auch immer, wollte trotzdem noch wissen ob es andere Möglichkeiten gibt. Ich habe auch schon Forums gesehen, wo jemand ihre Menü ohne choice schreiben möchten, weil bei XP geht das nicht.
Ich habe auch XP, habe nichts kopiert und es funktioniert trotzdem...keine Ahnung warum. Ohne choice.com

Liebe Grüsse, Kristina
Bitte warten ..
Mitglied: 11823
15.02.2007 um 09:29 Uhr
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. ;)
Bitte warten ..
Mitglied: Biber
15.02.2007 um 10:50 Uhr
@11823
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
Bitte warten ..
Mitglied: Butterblume
16.02.2007 um 16:31 Uhr
@Biber

Ok es funktioniert auch, ich habs auch verstanden wieso... du tust ja einfach ein beliebiges wort setzten...und holst es wieder...

Danke, aber ob man die datei wirklich braucht oder nicht, weiss ich immer noch nicht...
Bitte warten ..
Mitglied: Butterblume
16.02.2007 um 16:32 Uhr
@Biber

Ok es funktioniert auch, ich habs auch verstanden wieso... du tust ja einfach ein beliebiges wort setzten...und holst es wieder...

Danke, aber ob man die datei wirklich braucht oder nicht, weiss ich immer noch nicht...

Ich denke zwar mein lehrmeister hat es andres gemeint, nicht wegen dem wort sondern allgemein eine andere technik zu benutzen...andere struktur...
Bitte warten ..
Mitglied: Biber
16.02.2007 um 17:01 Uhr
Moin Butterblume,

...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
Bitte warten ..
Mitglied: Butterblume
16.02.2007 um 17:25 Uhr
@Biber

auf seinem rechner kann man diese batch-datei nicht ausführen (gebrauchen), also eben er erkennt diesen befehl nicht...warum echt?
Bitte warten ..
Mitglied: Biber
16.02.2007 um 18:01 Uhr
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:
set comspec
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)
01.
@echo off 
02.
:START 
03.
Echo. 
04.
Echo. 
05.
Echo Menu 
06.
Echo. 
07.
Echo. 
08.
Echo 1 - Explorer 
09.
Echo. 
10.
Echo 2 - Msn 
11.
Echo. 
12.
Echo 3 - Backup 
13.
Echo. 
14.
Echo 4 - Beenden 
15.
Echo. 
16.
REM zeigt das Menü an 
17.
 
18.
set /p choice=Bitte treffe deine Auswahl_ 
19.
REM eingabe der Variable 
20.
 
21.
if %choice% == 1 goto EXPLORER 
22.
if %choice% == 2 goto MSN 
23.
if %choice% == 3 goto BACKUP 
24.
if %choice% == 4 goto QUIT 
25.
....
..Statt dessen schreiben:
01.
REM -------- Menu.bat------- 
02.
@echo off 
03.
:START 
04.
Cls 
05.
Echo. 
06.
Echo. 
07.
Echo Menu 
08.
Echo. 
09.
Echo. 
10.
Echo 1 - Explorer 
11.
Echo. 
12.
Echo 2 - Msn 
13.
Echo. 
14.
Echo 3 - Backup 
15.
Echo. 
16.
Echo 4 - Beenden 
17.
Echo. 
18.
REM zeigt das Menü an
Und dann jeweils noch eine 1.bat, 2.bat, 3.bat... in Deinem Suchpfad anlegen:
01.
REM ------1.bat 
02.
@echo off 
03.
explorer.exe  
04.
Menu.bat
01.
REM -------2.bat 
02.
@echo off 
03.
C:\Programme\Messenger\msmsgs.exe  
04.
Menu.bat
.... 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
Bitte warten ..
Mitglied: Butterblume
19.02.2007 um 08:54 Uhr
@Biber

ich schaue mal...er hat auch XP
Bitte warten ..
Mitglied: Butterblume
19.02.2007 um 10:03 Uhr
ach...ich werde das Thema als gelöst markieren, es gibt wahrscheinlich nicht mehr viel Lösungen dazu.

@Biber

Irgednwie verstehe ich nicht ganz mit cls...bei mir funktionierts nicht...oder ich mache was falsch...
Bitte warten ..
Mitglied: 11823
19.02.2007 um 11:08 Uhr
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
Bitte warten ..
Mitglied: Phlegma
19.02.2007 um 12:59 Uhr
hi,
Irgednwie verstehe ich nicht ganz mit
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
Bitte warten ..
Mitglied: Butterblume
19.02.2007 um 17:55 Uhr
Ich bin echt erstaunt...
Meine Menüauswahl läuft bei ihm doch, ich weiss nicht warum er das gesagt hat aber ich habe selber gerade an seinem Rechner ausprobiert und es hat funktioniert...alle diese Versionen...
Hmm...entschuldigung, aber ich hab's selber nicht gewusst. Vielleicht hat er es ja extra gesagt damit ich was anderes herausfinde...
Wie auch immer...das was er mir eben gezeigt hat war ein Befehl für die "Eingabe" aber nicht mehr...wie er danach diese "Eingabe" auswählen will, weiss ich auch nicht.

Aber danke viel mal für eure Hilfe, hab echt was gelernt...hatte ja überhaupt keine Ahnung von dem...Null...
Und jetzt weiss ich schon mehr...

Lg, Kristina
Bitte warten ..
Neuester Wissensbeitrag
Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (32)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...