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?
Please also mark the comments that contributed to the solution of the article
Content-Key: 385809
Url: https://administrator.de/contentid/385809
Printed on: April 19, 2024 at 19:04 o'clock
4 Comments
Latest comment
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…