Batch: Aufruf von Sprungmarke schlägt fehl!


O

oli0602

Hallo Leute,

um mir meine Arbeit etwas zu erleichtern, habe ich eine Batch-Datei geschrieben, die mir den Zugang zu verschiedenen Ordnern erleichtern soll.

Nun komme ich aber bei Auswahl von 3. "Installationspfad" und 4. "Import" nicht weiter. Er bricht bei dieser Auswahl einfach ab. Alles andere geht. Habt Ihr eine Idee, woran es liegen könnte? Es scheint ja irgendwie mit den Verzeichnissen zusammenzuhängen!?

Code:
@echo off
:Menu
set auswahl=99
cls
echo Auswahl der meistgenutzten Ordner
echo ##################################
echo.
echo 1 - Testdaten
echo 2 - Tempfolder "Temp" (X:\Temp)
echo 3 - Installationspfad SOFTWARE
echo 4 - Import (D:\Import)
echo 5 - Storage (D:\Storage)
echo 0 - Beenden
echo.

set /p auswahl="Auswahl? "

if "%auswahl%" == "1" (
goto Testdaten
) else if "%auswahl%" == "2" (
	goto Temp
  ) else if "%auswahl%" == "3" (
		goto InstallPath
	) else if "%auswahl%" == "4" (
		goto ImportPath
	  ) else if "%auswahl%" == "5" (
			goto StoragePath
		) else if "%auswahl%" == "0" (
				goto Exit
		  ) else (
				echo Falsche Eingabe!
				pause
				goto menu
			)

:Testdaten
explorer "S:\Testdaten"
goto Menu

:Temp
if exist "X:\Temp" (
	explorer "X:\Temp"
) else (
	echo Verzeichnis nicht kann nicht gelesen werden/ist nicht vorhanden!
	pause
  )
goto menu

:InstallPath
if exist "C:\Program Files\XYZ" (
	explorer "C:\Program Files\XYZ"
	goto Menu
) else if exist "C:\Program Files (x86)\XYZ (
		explorer "C:\Program Files (x86)\XYZ"
		goto menu
  ) else if exist "C:\Programme\XYZ" (
			explorer "C:\Programme\XYZ"
			goto menu
	) else (
		echo Verzeichnis kann nicht gelesen werden/ist nicht vorhanden!
		pause
	)	
goto menu

:ImportPath
if exist "D:\Import" (
	explorer "D:\Import"
	goto menu
) else (
	echo Verzeichnis nicht vorhanden!
	set /p mkImport="Verzeichnis unter D:\Import anlegen(j/n)? "	
	if "%mkImport%" == "j"(
		mkdir D:\Import
		explorer "D:\Import"
		goto menu
	) else (
		echo Nicht gewünscht...
		pause
	  )
)
goto menu

:StoragePath
if exist "D:\Storage" (
	explorer "D:\Storage"
) else (
	echo Verzeichnis kann nicht gelesen werden/ist nicht vorhanden!
	pause
  )
goto menu

:Exit
exit

Vielen Dank und beste Grüße
oli0602
 

deepthroat

Erfahrenes Mitglied
Hi.

Das nächste Mal, schreibe doch bitte dazu was die Ausgabe / der Fehler ist. Ich bekomme bei Eingabe von "3" folgendes:
Code:
...
H:\dir>if "3" == "1" (goto Testdaten )  else if "3" == "2" (goto Temp )  else if
 "3" == "3" (goto InstallPath )  else if "3" == "4" (goto ImportPath )  else if "3" == "5" (goto StoragePath )  else if
"3" == "0" (goto Exit )  else (
echo Falsche Eingabe!
 pause
 goto menu
)
The syntax of the command is incorrect.
(echo hab ich natürlich auf "on" gestellt... *wink-mit-dem-zaunpfahl*)

\edit: Vergiss was ich geschrieben hatte, der Fehler liegt woanders. Du hast in Zeile 53 das schließende Anführungszeichen vergessen.

Aber mach es dir doch nicht so schwer:
Code:
if "%auswahl%" == "1" goto Testdaten
if "%auswahl%" == "2" goto Temp
if "%auswahl%" == "3" goto InstallPath
if "%auswahl%" == "4" goto ImportPath
if "%auswahl%" == "5" goto StoragePath
if "%auswahl%" == "0" goto Exit

echo Falsche Eingabe!
pause
goto menu
Gruß
 
Zuletzt bearbeitet:
O

oli0602

Hallo deepthroat,

erst einmal vielen Dank für deine schnelle Antwort! Ich habe erst einmal meine verschachtelten If's "gestrafft".

Das nächste Mal, schreibe doch bitte dazu was die Ausgabe / der Fehler ist.

Leider hätte ich dazu nicht viel schreiben können, selbst bei @echo on wird das Fenster einfach geschlossen...

Du hast in Zeile 53 das schließende Anführungszeichen vergessen.

Danke für den Hinweis. Habe ich behoben.

Dennoch will Auswahlpunkt 4 nicht funktionieren! Er bricht einfach ab, ohne Hinweismeldung!

Noch eine Idee dazu? Du hattest vor deinem Edit glaube ich geschrieben, dass in einem Else-Zweig nur ein Befehl vorkommen darf? Sprich ich müsste evtl. eine weitere Sprungmarke einbauen die dann das Verzeichnis erzeugt?

Beste Grüße

###EDIT###: Ich habe den Fehler gefunden! Wenn man nach einem "IF" mehrere Befehle verwenden möchte, so muss zwischen dem If und der Klammer ein Leerzeichen sein! Na darauf soll mal einer kommen :D Siehe Wikibooks
 
Zuletzt bearbeitet von einem Moderator:

Neue Beiträge

Forum-Statistiken

Themen
272.360
Beiträge
1.558.622
Mitglieder
187.833
Neuestes Mitglied
SirrDansen