kalamari
Goto Top

Falsche Eingabe bei set p - wie prüfen?

Hallo

Habe da mal eine Frage..
Ich habe folgendes ....
set /p einverstanden=
if /I "%einverstanden%"=="j" goto start  
if /I "%einverstanden%"=="n" goto nichteinverstanden  
if /I "%einverstanden%"=="*" goto evfehler  
Soweit so gut, nur denke ich, dass das nicht 100% richtig ist.
Was nun, wenn jemand rein zufällig die * taste drückt?

Es soll halt so sein, dass nur j oder n akzeptiert wird und jede andere Taste, oder auch nur die Enter Taste gedrückt wird, das Script nicht weiter macht?

Vielen Dank

Content-ID: 172176

Url: https://administrator.de/contentid/172176

Ausgedruckt am: 23.11.2024 um 01:11 Uhr

bastla
bastla 28.08.2011 um 19:13:06 Uhr
Goto Top
Hallo Kalamari!

Etwa so:
:Eingabe
set "einverstanden="  
set /p einverstanden=
if /I "%einverstanden%"=="j" goto start  
if /I "%einverstanden%"=="n" goto nichteinverstanden  
echo\
echo Bitte nur j oder n eingeben!
goto :Eingabe
Was nun, wenn jemand rein zufällig die * taste drückt?
... ist mir allerdings nicht so ganz klar ...

Grüße
bastla

P.S.: Bitte verwenden ...
99045
99045 28.08.2011 um 19:23:34 Uhr
Goto Top
vor Zeile 4 einfügen:
bastla
bastla 28.08.2011 um 19:27:28 Uhr
Goto Top
@99045
Warum?

Grüße
bastla
99045
99045 28.08.2011 um 19:33:58 Uhr
Goto Top
@bastla

weil ich im falschen Film war? Vergiss es. face-smile

Aber man könnte die Zeile 03 abändern in
set /p einverstanden=Einverstanden: (J / N) 

Nachtrag: Und dann sollte man als Sprungmarken keine Labels verwenden, die auch z. B. als Batch-Parameter oder Programme existieren können wie z. B. "start". Irgendwann für das nur zu Problemen.
Kalamari
Kalamari 28.08.2011 um 19:39:21 Uhr
Goto Top
Hallo

Vielen Dank!
Klappt einwandfrei.
Es ist so einfach, aber wenn man davor sitzt sieht man den Wald vor lauter Bäumen nicht.
Jetzt hinterher - total logisch face-smile

Danke!
Biber
Biber 28.08.2011 um 19:53:09 Uhr
Goto Top
Moin Kalamari,

ich würde aber dennoch Kaputtnicks Gedanken aufgreifen und zusätzlich nur nach dem Variablenwert einverstanden=J abfragen und prüfen.
set /p einverstanden=Einverstanden: (J / N) ?
If /i "%einverstanden%"=="J" goto :allesPrima  
goto :dannHaltNicht

Grüße
Biber
OKIDOKI
OKIDOKI 24.02.2012 um 12:14:19 Uhr
Goto Top
Hallo,

ich bekomme die Meldung, dass GOTO an dieser Stelle syntaktisch nicht verarbeitbar ist, was mache ich falsch?

OKIDOKI
bastla
bastla 24.02.2012 um 12:57:11 Uhr
Goto Top
Hallo OKIDOKI!
was mache ich falsch?
Zunächst schon einmal, dass Du nicht Deinen Code (entsprechend formatiert) postest ...

Grüße
bastla
OKIDOKI
OKIDOKI 24.02.2012 um 14:01:32 Uhr
Goto Top
peinlich ... face-wink

:verz1
ECHO Verzeichnis wechseln [w] oder Rootverzeichnis [r] ?
ECHO\
SET /P M= w/r, dann ENTER: 
IF %M%==r GOTO :weiter
IF %M%==w GOTO :ver_loop
echo\
echo Bitte nur r oder w eingeben!
goto :verz1

:ver_loop
ECHO Directory so eingeben z.B.: hauptverzeichnis
set /p var_a=cd 
>>".\config.txt" ECHO  %var_a%   

:verz
ECHO Weiter wechseln [w] oder Zielverzeichnis [z] erreicht ?
ECHO\
SET /P M= Auswahl w/z , dann ENTER: 
IF %M%==z GOTO :weiter
IF %M%==w GOTO :ver_loop
echo\
echo Bitte nur w oder z eingeben!
goto :verz

:weiter
:: hier gehts weiter


Grüße OKIDOKI
PS: Wie hält man die Unwissenheit von uns bloß aus ...
bastla
bastla 24.02.2012 um 16:13:10 Uhr
Goto Top
Hallo OKIDOKI!

Wenn es nicht auf beiden Seiten des "==" Werte gibt, geht das daneben - daher etwa:
if /i "%M%"=="r" goto :weiter
Hier wurde auch gleich noch für eine ev klemmende Shift-Taste vorgesorgt, sodass auch die Eingabe von R akzeptiert wird ...
Es würde sich übrigens auch Zeile 13 noch eine Überprüfung der Eingabe anbieten ...

Grüße
bastla
OKIDOKI
OKIDOKI 24.02.2012 um 16:44:08 Uhr
Goto Top
Super!

Zeile 13: Hier meinst du wahrscheinlich das "cd"? Dies soll am Anfang der Eingabe vorgegeben sein, weil es hier um den Verzeichnisechsel geht...

Dankeschön
OKIDOKI
bastla
bastla 24.02.2012 um 16:58:20 Uhr
Goto Top
Hallo OKIDOKI!
Zeile 13: Hier meinst du wahrscheinlich das "cd"?
Nein; ich würde prüfen, ob überhaupt etwas eingegeben wurde, und wenn ja, ob der entsprechende Ordner existiert ...

Grüße
bastla
OKIDOKI
OKIDOKI 24.02.2012 um 17:09:36 Uhr
Goto Top
Hallo bastla,
ja das ist natürlich richtig, vielleicht so?

if defined var_a (GOTO weiter) else (GOTO error)

Gruß OKIDOKI
bastla
bastla 24.02.2012 um 17:18:09 Uhr
Goto Top
Hallo OKIDOKI!

Ja, und zusätzlich ein
if not exist %var_a% (echo Den Ordner "%var_a%" gibt's nicht - bitte neu eingeben! & goto :ver_loop
Grüße
bastla
OKIDOKI
OKIDOKI 24.02.2012 um 19:56:19 Uhr
Goto Top
Hallo bastla,

jetzt dachte ich schon ich habs laaangsam, da kommst du und setzt noch einen drau! face-wink

Vielen Dank euch,
OKIDOKI