Batch If/Else Verschachtelung

CrasherX

Cadet 1st Year
Registriert
Dez. 2012
Beiträge
14
Steuerelementen Zeichen in Datei als String anzeigen

Hallo Leute

Ich bin jetz seit einiger Zeit an einer If/Else Verschachtelung beschäftigt.

Ich kriege es nicht hin, wahrscheinlich mache ich etwas falsch.

Hier mal ein einfaches Beispiel:

Code:
:home
echo 1
echo 2
echo 3
set /p wahl=">
if %wahl%==1 (
goto :1
) else (
if %wahl%==2 (
goto :2
) else (
if %wahl%==3 (
) else (
echo Falsche Eingabe!
pause
goto :home
)))

Dies ganze soll eigentlich nur unnötige Skriptzeilen ersetzen... denn ohne If/else... müsste ich nach jeder if Abfrage noch eine zeile:
Code:
if not %wahl%==2
echo Falsche Eingabe!
pause
goto :home

schreiben..

Danke für eure Hilfe

MFG
 
Zuletzt bearbeitet:
Mach es mit einem switch case, das ist hier angebrachter und leichter.
Den Rest liefert dir Google ;)

Des Weiteren hast du dich mit den Klammern verzählt.
Gehe noch mal die schliessenden Klammern durch, bin mir ziemlich sicher eine an der Falschen stelle ist und somit die If-Verschachtelung ihren Zweck nivht mehr erfüllt.
 
Switch Case währe nett aber in Batch? wie implementier ich eine funktion von C# in eine einfache Skriptsprache... oder gibt es da was ähnliches?

Choice habe ich auch schon überlegt. aber in der originalen Batch wird die Variable %wahl% mit strings gefüttert... zum Beispiel: cpu, ram, oder mot.
Choice funktioniert aber nur mit 1-stelligen eingaben, oder?

Danke
 
Bei Choice ist die Auswahl einstellig. Dann kannst du ja immer noch deine Variablen setzen.
 
Dann muss ich also alle String-Eingaben in Nummeretische-Eingabemöglichkeiten abändern?
 
Ist eigendlich super beschrieben....

choice /n /c CRMQ /M "(C)PU, (R)AM, (M)ot, (Q)uit"

if errorlevel 1 goto 1:
if errorlevel 2 goto 2:
if errorlevel 3 goto 3:
if errorlevel 4 goto ende:

:1
set variable=cpu
goto ende:

:2
:3

:ende
 
Wunderbar es funktioniert :D Danke.

Nun habe ich ein anderes Problemchen.

Der User möchte gern verschiedene String Abfolgen eingeben. In einer dieser Abfolgen kommen Steuerelemente, wie: "<", ">", ";", ", "&", "=", "|"

ich bin mir sicher, dass ich den eingegebenen String der in, sagen wir, %str% steckt. Durch eine if for Schleife abzugleichen und die oben besagten Steuerelemente in " und " zu setzen, damit diese in der >>*.txt als Text gekenzeichnet werden.

Meine Sorge ist nur, dass ich leider noch nicht so bewandert bin was If For, betrifft. Falls jemand von euch gerade, Fit in dieser Funktion ist... freue ich mich über ein Codeschnippsel welcher auf meine Anfrage passt.

Mein Code:
Code:
@echo off
set saven=save.note
set loadn=load.note
set delen=dele.note
echo Neue Notitz:
del /f "%userprofile%\documents\Blub\Notitzen\newnote.tmp"
for /f "tokens=2 delims=:." %%i in ('chcp') do set "CP=%%i" 
chcp 1252>nul
set /p newnote1=
if %newnote1%==%saven% (
	goto :savenote
	)
if %newnote1%==%delen% (
	goto :delenote
	)
if %newnote1%==%loadn% (
	goto :loadnet
	)
echo %newnote1% >>"%userprofile%/documents/Blub/Notitzen/newnote.tmp"
chcp %CP%>nul

Danke euch :)

MFG
 
Zurück
Oben