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

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

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

Member: rubberman
rubberman Jun 30, 2012 updated at 12:28:56 (UTC)
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
Member: MrSonei6
MrSonei6 Jun 30, 2012 at 12:48:07 (UTC)
Goto Top
Vielen lieben Dank
So einfach OHH man
DANKE

Und Entschuldige die nicht Codeformatierung, habe ich vergessen!!

LG
ICH
Member: pieh-ejdsch
pieh-ejdsch Jun 30, 2012 updated at 14:17:44 (UTC)
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