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.
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.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 187284
Url: https://administrator.de/contentid/187284
Ausgedruckt am: 16.11.2024 um 11:11 Uhr
3 Kommentare
Neuester Kommentar
Hallo MrSonei6
Ein
Zu deinem Problemchen:
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
Grüße
rubberman
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
GOTO FALSCH
in die nächste Zeile schreiben.Grüße
rubberman
moin,
eine Fehlerunabhängige Variante zB. wegen Sonderzeichen bei Eingabe:
PS.
[Edit]
Goto :Falsch nach die Schleife gesetzt.
[/Edit]
Gruß Phil
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. [Edit]
Goto :Falsch nach die Schleife gesetzt.
[/Edit]
Gruß Phil