In Batch Datei eine Prüfung einbauen, ob ein Wert eine Zahl ist
Hallo!
Ich habe mich in letzter Zeit mal ein bisschen mit DOS/Batch Programmierung beschäftigt, und habe folgendes Script erstellt:
Dieses Script erzeugt in dem Ordner "H:\testordner\" eine bestimmte Anzahl an leeren .txt-Dateien mit fortlaufender Nummer.
Jetzt möchte ich eine Prüfung einbauen, wenn der Wert, der eingegeben wurde, keine Zahl ist.
Wenn der Wert, der bei der Abfrage eingegeben wurde, keine Zahl ist, soll eine Fehlermeldung angezeigt werden.
Das bekomme ich leider noch nicht so ganz hin, es wäre super, wenn ihr mir kurz helfen könntet.
MfG und vielen Dank im Vorraus!
Ich habe mich in letzter Zeit mal ein bisschen mit DOS/Batch Programmierung beschäftigt, und habe folgendes Script erstellt:
@echo off
set /p abfrage=Wie viele Dateien moechten Sie erstellen?
FOR /L %%f IN (1,1,%abfrage%) DO copy nul H:\testordner\%%f.txt
echo Es wurden %abfrage% Dateien erstelltt!
echo Zum beenden bitte eine beliebige Taste Druecken.
pause
Dieses Script erzeugt in dem Ordner "H:\testordner\" eine bestimmte Anzahl an leeren .txt-Dateien mit fortlaufender Nummer.
Jetzt möchte ich eine Prüfung einbauen, wenn der Wert, der eingegeben wurde, keine Zahl ist.
Wenn der Wert, der bei der Abfrage eingegeben wurde, keine Zahl ist, soll eine Fehlermeldung angezeigt werden.
Das bekomme ich leider noch nicht so ganz hin, es wäre super, wenn ihr mir kurz helfen könntet.
MfG und vielen Dank im Vorraus!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 70743
Url: https://administrator.de/forum/in-batch-datei-eine-pruefung-einbauen-ob-ein-wert-eine-zahl-ist-70743.html
Ausgedruckt am: 22.04.2025 um 11:04 Uhr
8 Kommentare
Neuester Kommentar
so?:
miniversum
@echo off
set /p abfrage=Wie viele Dateien moechten Sie erstellen?
set /a abfrage2=%abfrage%+0
if %abfrage% NEQ %abfrage2% (
echo "%abfrage%" ist keine Zahl!
) else (
FOR /L %%f IN (1,1,%abfrage%) DO copy nul H:\testordner\%%f.txt
echo Es wurden %abfrage% Dateien erstelltt!
echo Zum beenden bitte eine beliebige Taste Druecken.
)
pause
miniversum
Moin henni1 und miniversum,
Kleine Fussnote:
Wenn der Eingabewert wirklich keine Zahl sein sollte, kommt eine meterlange Fehlermeldung auf den Bildschirm bzw. auf den Ausgabekanal 2 (STDERR).
Eine Fehlermeldung schreibt der Batch ja individuell - also kann man/frau die M$-Vorlage entsorgen.
Dazu einfach noch eine Umleitung von STDERR anhängen:
Grüße
Biber
Kleine Fussnote:
Wenn der Eingabewert wirklich keine Zahl sein sollte, kommt eine meterlange Fehlermeldung auf den Bildschirm bzw. auf den Ausgabekanal 2 (STDERR).
Eine Fehlermeldung schreibt der Batch ja individuell - also kann man/frau die M$-Vorlage entsorgen.
Dazu einfach noch eine Umleitung von STDERR anhängen:
....
set /a abfrage2=%abfrage%+0 2>nul
...
Grüße
Biber
Moin miniversum,
kommt wie immer im Leben auf die Reihenfolge bzw. die Vollständigkeit des Testens an...*gg
==> bei Fehlerfall 2 (Eingabe war etwas, dass vom großen Guru in Redmond als Zahl ANGESEHEN wurde,
weil "an erster Stelle steht doch eine Ziffer *axelzuck*"....
Dort kommt NIX (auch keine "0") auf STDOUT.
Aber immer ein Zweizeiler auf STDERR.
Ist halt buggy zusammengekehrt, dieses Betriebssystem... na, ja -Geiz ist geil....
Grüße
Biber
kommt wie immer im Leben auf die Reihenfolge bzw. die Vollständigkeit des Testens an...*gg
(=21:51:41 D:\=)
>set /a asdasdas23+0
0
(=21:51:52 D:\=)
>set /a 23asasas+0
Ungültige Zahl. Nummerische Konstanten sind entweder dezimale (17),
hexadezimale (0x11) oder oktale (021) Zahlen.
(=21:51:55 D:\=)
>set /a asdasdas23+0 2>nul
0
(=21:53:09 D:\=)
>set /a 23asasas+0 2>nul
(=21:53:18 D:\=)
weil "an erster Stelle steht doch eine Ziffer *axelzuck*"....
Dort kommt NIX (auch keine "0") auf STDOUT.
Aber immer ein Zweizeiler auf STDERR.
Ist halt buggy zusammengekehrt, dieses Betriebssystem... na, ja -Geiz ist geil....
Grüße
Biber
Moin miniversum,
>okok ich gebs ja zu ich habs nur mit einem Buchstaben getestet...
So um die Ecke zu denken wie M$ programmiert erfordert auch eine langjährige Übung...
Andererseits, da die offensichtlich nie etwas ernsthaft testen, macht es immer einen Heidenspass, deren Vorführmodelle auf Messen mal auf den Poller laufen zu lassen.
Grüße
Biber
>okok ich gebs ja zu ich habs nur mit einem Buchstaben getestet...
So um die Ecke zu denken wie M$ programmiert erfordert auch eine langjährige Übung...
Andererseits, da die offensichtlich nie etwas ernsthaft testen, macht es immer einen Heidenspass, deren Vorführmodelle auf Messen mal auf den Poller laufen zu lassen.
Grüße
Biber