Fehler in IF Abfrage
Hallo,
folgender Code macht Probleme:
Die Zahl muß immer zweistellig eingegeben werden damit die Eingabe einheitlich ist, die 0 ist einstellig.
Bei den Eingaben 01-07 und über 10 arbeitet der Code wie erwartet. Bei 08 und 09 wird die Schleife aber verlassen und führt zu Fehlern. Die Lösung ist offenbar folgende Zeile:
Ist das Verhalten der Eingabeaufforderung erklärbar oder handelt es sich um einen Fehler?
folgender Code macht Probleme:
echo off
:beginn
echo beginn
pause
:anfang
cls
ECHO 01 test
ECHO 02 test2
ECHO 0 beginn
ECHO.
SET Eingabe=""
SET /p Eingabe= Auswahl:
IF %Eingabe% EQU 0 GOTO :beginn
IF %Eingabe% LSS 0 GOTO :anfang
IF %Eingabe% GTR 2 GOTO :anfang
IF %Eingabe% EQU "" GOTO :anfang
echo zahl: %Eingabe%
pause
Die Zahl muß immer zweistellig eingegeben werden damit die Eingabe einheitlich ist, die 0 ist einstellig.
Bei den Eingaben 01-07 und über 10 arbeitet der Code wie erwartet. Bei 08 und 09 wird die Schleife aber verlassen und führt zu Fehlern. Die Lösung ist offenbar folgende Zeile:
IF %Eingabe% GTR 02 GOTO :anfang
Ist das Verhalten der Eingabeaufforderung erklärbar oder handelt es sich um einen Fehler?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 385809
Url: https://administrator.de/contentid/385809
Ausgedruckt am: 22.11.2024 um 04:11 Uhr
4 Kommentare
Neuester Kommentar
Hallo
Octal
Ziffernfolgen die mit "0" beginnen werden in einigen Sprachen als Octal interpretiert (Base 8) "08" und "09" sind ungültig weil mit 0-7 die 8 Ziffern der Base 8 ausgeschöpft sind.
https://stackoverflow.com/questions/7218760/why-is-08-not-a-valid-intege ...
~Arano
Octal
Ziffernfolgen die mit "0" beginnen werden in einigen Sprachen als Octal interpretiert (Base 8) "08" und "09" sind ungültig weil mit 0-7 die 8 Ziffern der Base 8 ausgeschöpft sind.
https://stackoverflow.com/questions/7218760/why-is-08-not-a-valid-intege ...
~Arano
Hallo,
das funktioniert so nicht. Das musst du mit ERRORLEVEL abfangen.
Ungetestet etwa so:
Die Syntax zum IF Befehl erfährst Du mit
Und die Errorlevel müssen absteigen sein!!!
Also 255, 254, 10, 2, 1, 0
D.h. der höchste Wert zu erst und der niedrigste zuletz.
Das hätte man auch selber rausfinden können, ohne eine Frage hier.
Gruss Penny
das funktioniert so nicht. Das musst du mit ERRORLEVEL abfangen.
Ungetestet etwa so:
IF ERRORLEVEL GTR 2 GoTo :Anfang
IF ERRORLEVEL EQU 0 GoTo :Beginn
IF/?
Und die Errorlevel müssen absteigen sein!!!
Also 255, 254, 10, 2, 1, 0
D.h. der höchste Wert zu erst und der niedrigste zuletz.
Das hätte man auch selber rausfinden können, ohne eine Frage hier.
Gruss Penny
Funktioniert top. Deswegen stellst du hier auch eine Frage…