mrsonei6
Goto Top

CHOICE Frage Was tun bei Falscheingabe des Users wie kann gesprungen werden

Hi ich Jungs und Mädls? ;)

Ich bastl gerade an ner .bat Datei rum.

Ich hab zwei Auswahlmöglichkeiten die mit "1" und "2" zum jeweiligen punkt im Skript springen.

Frage wie oder was kann ich eingeben wenn ich eine nicht angegebene Auswahl eingebe damit das Skript zu einen bestimmten Punkt springt wenn ich zum Beispiel eine "5" eingebe soll es zu dem Punkt "Falsch" im Skript springen

Hier mal der Anfang vom Script

:NEU
@cls
@title ShutDown Programm
@echo In wievielen Stunden soll sich dein PC Herunterfahren?
@echo Bitte gebe eine Zahl zwischen 1 und 2 ein
@echo [1]= 1h [2]= 2h
@echo *
@echo [a]= Herunterfahren abbrechen
@echo *
@echo [e]= Exit
@echo.
@set /P CHOICE=
@if "%CHOICE%" == "1" GOTO :1
@if "%CHOICE%" == "2" GOTO :2
@if "%CHOICE%" == "a" GOTO :ABBRUCH
@if "%CHOICE%" == "e" GOTO :EXIT

UND HIER MÖCHTE ICH EINE FALSCHENGABE ABFANGEN DIE MICH ZU DEN PUNKT ":FALSCH" IM SKRIPT BRINGT

HABE SCHON folgendes getestet
"@IF "%CHOICE%" => "nul" GOTO :FALSCH"
oder
if not %choice%== set choice=%choice:FALSCH%



:1
@cls
@echo Dein PC faehrt in einer Stunde herunter.
@echo *
@echo Fals du jetzt doch noch abbrechen willst druecke "a"
@shutdown /s /t 3600

@set /P CHOICE=
@if "%CHOICE%" == "a" GOTO :ABBRUCH
@if "%CHOICE%" => "nul" GOTO :EXIT
@echo.

:2
@cls
@echo Dein PC faehrt in zwei Stunde herunter.
@echo *
@echo Fals du jetzt doch noch abbrechen willst druecke "a"
@shutdown /s /t 7200

@set /P CHOICE=
@if "%CHOICE%" == "a" GOTO :ABBRUCH
@if "%CHOICE%" => "nul" GOTO :EXIT
@echo.

Content-ID: 187284

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

Ausgedruckt am: 16.11.2024 um 11:11 Uhr

rubberman
rubberman 30.06.2012 aktualisiert um 14:28:56 Uhr
Goto Top
Hallo MrSonei6

Ein @echo off am Anfang des Codes erspart dir die @s am Anfang jeder Zeile. Codeformatierung wäre auch nett gewesen.

Zu deinem Problemchen:
IF "%CHOICE%" == "1" GOTO :1  
IF "%CHOICE%" == "2" GOTO :2  
IF "%CHOICE%" == "a" GOTO :ABBRUCH  
IF "%CHOICE%" == "e" GOTO :EXIT  
Nach diesen Zeilen ist klar, dass die Variable CHOICE weder den Wert 1, noch 2, a, oder e hat, denn das wurde ja bereits geprüft. Du musst also nichts weiter tun als ein GOTO FALSCH in die nächste Zeile schreiben.

Grüße
rubberman
MrSonei6
MrSonei6 30.06.2012 um 14:48:07 Uhr
Goto Top
Vielen lieben Dank
So einfach OHH man
DANKE

Und Entschuldige die nicht Codeformatierung, habe ich vergessen!!

LG
ICH
pieh-ejdsch
pieh-ejdsch 30.06.2012 aktualisiert um 16:17:44 Uhr
Goto Top
moin,

eine Fehlerunabhängige Variante zB. wegen Sonderzeichen bei Eingabe:
for /f delims^= %i in ('set /p "choice=Bitte mach Deine Eingabe: "^>con ^&cmd /von/c echo !choice!'  
) do   IF %%i == 1 (GOTO :1
) else IF %%i == 2 (GOTO :2
) else IF /i %%i == a (GOTO :ABBRUCH
) else IF /i %%i == e GOTO :EXIT
GOTO :Falsch

PS.
Entschuldige die nicht Codeformatierung, habe ich vergessen!!
Dann hole sie doch bitte nach. face-wink
[Edit]
Goto :Falsch nach die Schleife gesetzt.
[/Edit]

Gruß Phil