Batch Integerzahl-Überprüfung

  • Sonstige

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von kwon.

    Batch Integerzahl-Überprüfung

    Hallo,

    leider kenne ich mich mit Batchdateien nicht so gut aus, benötige aber ein Skript, das
    eine eingegebene Variable überprüft ob sie eine positive Integerzahl ist.
    Die Abfrage soll solange wiederholt werden, bis der Benutzer eine positive Integerzahl eingibt.

    Da ich ein Anfänger in Batch bin:
    Vielen Dank für die Hilfe im Voraus!!

    Hier mein Versuch:

    Quellcode

    1. @echo off
    2. setlocal enableextensions enabledelayedexpansion
    3. :schleife
    4. set /p %p%="KistenNr eingeben."
    5. if %p EQU +%p (
    6. exit
    7. ) else (
    8. goto :schleife
    9. )
    10. echo "fertig"
    11. endlocal
    12. pause
    Moin,

    eigentlich wären das etwa 5 Sekunden Internet-Suche gewesen: Batch größer als

    Statt

    Quellcode

    1. ​if %p EQU +%p (


    Nimm

    Quellcode

    1. if %p GTR +%p (


    Auch scheint mit die Syntax nicht ganz zu stimmen.
    Die Deklaration einer Variable erfolgt ohne %.
    Für die Abfrage einer Variablen muss diese in zwei % stehen.
    Woher kommt +%p? Ich habe das durch x=5 geändert.

    Quellcode

    1. @echo off
    2. setlocal enableextensions enabledelayedexpansion
    3. :schleife
    4. set /p p="KistenNr eingeben."
    5. set x=5
    6. if %p% GTR %x% (
    7. exit
    8. ) else (
    9. goto :schleife
    10. )
    11. echo "fertig"
    12. endlocal
    13. pause


    So funktioniert es.
    Schnell hingefummelt, müsste aber funktionieren

    Quellcode

    1. set /p zahl="Zahl eingeben"
    2. echo %zahl% | findstr /r "^[0-9]" > nul
    3. if %ERRORLEVEL% EQU 0 (
    4. echo Ok
    5. ) else (
    6. echo Nix ok
    7. )


    Errorlevel springt über 0, wenn zuvor im Script ein Fehler aufgetreten ist. Anders lässt sich das meines Wissens nach nicht abfangen. Batch ist bei mir, wie Dksksm auch geschrieben hat, über 20 Jahre her.

    Hängt an dem Script noch mehr Batch-Code dran? Es wäre vielleicht eine Überlegung wert, den alten Batch-Kram durch etwas Aktuelleres wie VB zu ersetzen.
    Habe online etwas Code gefunden, den ich anpassen konnte:

    Quellcode

    1. ​@echo off
    2. :schleife
    3. set /p a="Bitte KistenNr eingeben."
    4. SET "var="&for /f "delims=0123456789" %%i in ("%a%") do set var=%%i
    5. if defined var (
    6. echo Eingabe war keine Zahl
    7. goto :schleife
    8. ) else (
    9. echo passt
    10. )
    11. pause


    Trotzdem vielen Dank für die Hilfe!!

    Gruß,
    kwon