WinFuture-Forum.de: Batch: Goto Reagiert Nicht - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Batch: Goto Reagiert Nicht Weitere Fragen im letzten Beitrag von mir


#1 Mitglied ist offline   Erte 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.084
  • Beigetreten: 03. Januar 07
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 02. Juli 2008 - 12:41

Hiho

Ich hab da ein kleines Problem mit meinem Batch. Ich will ein goto einbauen bei welchem man zurück zum Hauptmenü kommt. Das hab ich mit einem "goto Start" gemacht. Das :Start wurde auch gesetzt. Wenn ich jetzt die 3 drücke (ist die Zahl die ich zugewiesen habe), dann bringt er die Fehlermeldung dass der Wert nicht definiert wurde, und springt dann zum Start. Ich habe zwar das erreicht was ich wollte, jedoch nur weil bei der else Funktion gesagt wurde dass er nachher wieder zum Start springen soll.
@Echo off

:Start
cls
Echo __________________________________________________
______________________________
Echo			========  =				   =
Echo			=	  =  =				   =										  
Echo			=	  =  =				=======  =		   =======
Echo			=	  =  =				   =				 =
Echo			========  ======  ========	=	 =  =	 =  =
Echo			========  ======  =	  =	=	 =  =	 =  =======
Echo			=	  =  =	=  =	  =	=	 =  =	 =		=
Echo			=	  =  =	=  =	  =	=	 =  =	 =		=
Echo			=	  =  =	=  ==========  =	 =  =======  =======
Echo __________________________________________________
______________________________
Echo.

Echo [1] - Menpunkt 1
Echo.
Echo [2] - Menpunkt 2
Echo.
Echo [3] - Men neu ”ffnen
Echo.
Echo [4] - Beenden
Echo.

set /p choice=Ihre Auswahl [x]: 

if %choice% == 1 (goto 1) else (goto ungltig)
if %choice% == 2 (goto 2) else (goto ungltig)
if %choice% == 3 (goto 3) elso (goto ungltig)
if %choice% == 4 (goto exit) else (goto ungltig)

:1
cls
Echo __________________________________________________
______________________________
Echo			========  =				   =
Echo			=	  =  =				   =										  
Echo			=	  =  =				=======  =		   =======
Echo			=	  =  =				   =				 =
Echo			========  ======  ========	=	 =  =	 =  =
Echo			========  ======  =	  =	=	 =  =	 =  =======
Echo			=	  =  =	=  =	  =	=	 =  =	 =		=
Echo			=	  =  =	=  =	  =	=	 =  =	 =		=
Echo			=	  =  =	=  ==========  =	 =  =======  =======
Echo __________________________________________________
______________________________
Echo.

Echo Men 1
Echo.
Echo [1] - Menpunkt 1
Echo.
Echo [2] - Menpunkt 2
Echo.
Echo [3] - Zurck zum Hauptmen
Echo.
Echo [4] - Beenden

set /p choice=Ihre Auswahl [x]: 

if %choice% == 1 (goto 1.1) else (goto ungltig)
if %choice% == 2 (goto 2) else (goto ungltig)
if %choice% == 3 (goto Start) elso (goto ungltig)
if %choice% == 4 (goto beenden) else (goto ungltig)

:1.1
Echo blub
goto beenden

:ungltig
Echo __________________________________________________
____________________________
Echo Der Wert ^"%choice%^" ist kein gltiger Wert. Bitte versuchen Sie es noch einmal.
Echo __________________________________________________
____________________________
Echo.
pause
cls
goto Start

:beenden
pause
exit

Dort wo das 2. "set /p choice..." ist, fängt das Problem an. Ich tippe 3 ein, und er springt zu "ungültig" (ü, und die anderen umlaute werden ned angezeigt da ich die Batch Datei im DOS geschrieben habe und es dann aus dem Notepad rauskopiert habe um es hier zu posten).

Dieser Beitrag wurde von Erte bearbeitet: 02. Juli 2008 - 15:21

0

Anzeige



#2 Mitglied ist offline   Sebastian83 

  • Gruppe: aktive Mitglieder
  • Beiträge: 226
  • Beigetreten: 16. Juni 08
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 02. Juli 2008 - 12:57

Dein Fehler ist der: Bei der ersten "if %chioce% == 1"-Abfrage springt er schon zu :ungültig, weil die 3 ja nicht 1 ist. Du musst die else-Befehle dahinter weglassen, außer beim letzten.

EDIT: Desweiteren hast du da 2 mal (oben und unten) "elso" statt "else" stehen!

Dieser Beitrag wurde von Sebastian83 bearbeitet: 02. Juli 2008 - 12:59

0

#3 Mitglied ist offline   Erte 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.084
  • Beigetreten: 03. Januar 07
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 02. Juli 2008 - 13:09

Beitrag anzeigenZitat (Sebastian83: 02.07.2008, 13:57)

Dein Fehler ist der: Bei der ersten "if %chioce% == 1"-Abfrage springt er schon zu :ungültig, weil die 3 ja nicht 1 ist. Du musst die else-Befehle dahinter weglassen, außer beim letzten.

EDIT: Desweiteren hast du da 2 mal (oben und unten) "elso" statt "else" stehen!

Also, danke dir führ deine Antwort. Bin die Batch Datei vorher durchgegangen, dabei ist mir der Fehler mit dem else und elso aufgefallen. Ich werds mal versuchen, schreib gleich wieder.

Edit: Danke dir vielmals, hat geklappt :D

Edit2 ERLEDIGT: Hab da noch ne Frage: Kennt jemand eine Variable wie z. B. %WINDOWS% oder %USERPROFILE% für Eigene Dateien? Weil %USERPROFILE%/Eigene Dateien kann ich ned brauchen da die Eigenen Dateien ein Netzlaufwerk sind.

Edit3: Kann ich einen Prozess welcher in der Batch Datei ausgeführt wird, ausführen, ohne dass der vorangehende beendet wurde?
Also z. B.:
:Menü 1
Dokument.dot
goto exit

:exit
exit

Kann ich machen dass er zu der Sprungmarke exit geht ohne dass das Word Dokument geschlossen wird?

Edit4: Ich will dass der Batch ein Dokument öffnet welches am Anfang immer gleich ist, nur die Zahl am Schluss ist anders. Jedenfalls hab ich "set /p WochenNummer=Bitte geben Sie die Wochennummer ein: " gemacht. Nachher will ich dass er dann das Dokument öffnet. Das wollte ich eigentlich mit "Woche_%WochenNummer%.doc" öffnen. Er nimmt aber den Wert nicht an welcher da angegeben werden soll (sind ja keine vorgegebenen Werte wie beim Menü, sondern der User sagt welchen Wochenbericht er aufmachen will).

Dieser Beitrag wurde von Erte bearbeitet: 02. Juli 2008 - 15:17

0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0