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-Key: 172176

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

Printed on: April 19, 2024 at 03:04 o'clock

Member: bastla
bastla Aug 28, 2011 at 17:13:06 (UTC)
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 ...
Mitglied: 99045
99045 Aug 28, 2011 at 17:23:34 (UTC)
Goto Top
vor Zeile 4 einfügen:
Member: bastla
bastla Aug 28, 2011 at 17:27:28 (UTC)
Goto Top
@99045
Warum?

Grüße
bastla
Mitglied: 99045
99045 Aug 28, 2011 at 17:33:58 (UTC)
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.
Member: Kalamari
Kalamari Aug 28, 2011 at 17:39:21 (UTC)
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!
Member: Biber
Biber Aug 28, 2011 at 17:53:09 (UTC)
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
Member: OKIDOKI
OKIDOKI Feb 24, 2012 at 11:14:19 (UTC)
Goto Top
Hallo,

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

OKIDOKI
Member: bastla
bastla Feb 24, 2012 at 11:57:11 (UTC)
Goto Top
Hallo OKIDOKI!
was mache ich falsch?
Zunächst schon einmal, dass Du nicht Deinen Code (entsprechend formatiert) postest ...

Grüße
bastla
Member: OKIDOKI
OKIDOKI Feb 24, 2012 at 13:01:32 (UTC)
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 ...
Member: bastla
bastla Feb 24, 2012 at 15:13:10 (UTC)
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
Member: OKIDOKI
OKIDOKI Feb 24, 2012 at 15:44:08 (UTC)
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
Member: bastla
bastla Feb 24, 2012 at 15:58:20 (UTC)
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
Member: OKIDOKI
OKIDOKI Feb 24, 2012 at 16:09:36 (UTC)
Goto Top
Hallo bastla,
ja das ist natürlich richtig, vielleicht so?

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

Gruß OKIDOKI
Member: bastla
bastla Feb 24, 2012 at 16:18:09 (UTC)
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
Member: OKIDOKI
OKIDOKI Feb 24, 2012 at 18:56:19 (UTC)
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