Gültigkeitsprüfungen von Variablen
Hallo,
ich habe in meiner kleinen Batch-Datei drei Variablen, die ich mehreren Gültigkeitsprüfungen unterziehen möchte. Mit dem Skript soll ein Projekt angelegt werden. Weiterhin benutze ich die Informationen später um Parameter zu setzen, die wiederum für Programmaufrufe notwendig sind.
(1) Projektnummer
(2) Projektname
(3) Projekttyp
Das sind die drei Variablen, die ich prüfen möchte.
(1) Die Projektnummer darf nur 4-stellig sein und nur aus Zahlen bestehen
(2) Hier ist eigentlich keine Prüfung notwendig, höchstens auf die maximal zulässige Gesamtlänge eines Ordnernamens und der Ausschluss von Sonderzeichen
(3) Hier sind nur die Zeichen E und I erlaubt, d. h. auch nur in Großbuchstaben
Ich habe schon ein bisschen probiert, bspw. mit set /a eine numerische Variable angelegt, um die Projektnummer zu prüfen. Alles zusammen hat es jedoch noch nicht den gewünschten Erfolg gebracht, bspw. die Länge der Projektnummer. Vielleicht könnt ihr mir etwas Inspiration geben.
LG
ich habe in meiner kleinen Batch-Datei drei Variablen, die ich mehreren Gültigkeitsprüfungen unterziehen möchte. Mit dem Skript soll ein Projekt angelegt werden. Weiterhin benutze ich die Informationen später um Parameter zu setzen, die wiederum für Programmaufrufe notwendig sind.
(1) Projektnummer
(2) Projektname
(3) Projekttyp
Das sind die drei Variablen, die ich prüfen möchte.
(1) Die Projektnummer darf nur 4-stellig sein und nur aus Zahlen bestehen
(2) Hier ist eigentlich keine Prüfung notwendig, höchstens auf die maximal zulässige Gesamtlänge eines Ordnernamens und der Ausschluss von Sonderzeichen
(3) Hier sind nur die Zeichen E und I erlaubt, d. h. auch nur in Großbuchstaben
Ich habe schon ein bisschen probiert, bspw. mit set /a eine numerische Variable angelegt, um die Projektnummer zu prüfen. Alles zusammen hat es jedoch noch nicht den gewünschten Erfolg gebracht, bspw. die Länge der Projektnummer. Vielleicht könnt ihr mir etwas Inspiration geben.
LG
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 183838
Url: https://administrator.de/forum/gueltigkeitspruefungen-von-variablen-183838.html
Ausgedruckt am: 09.03.2025 um 12:03 Uhr
14 Kommentare
Neuester Kommentar

moin,
1) set /a naja -ok, aber so geht das einfacher in einem Rutsch
edit nicht hybsch, aber würgungsvoll
3)
Gruß
1) set /a naja -ok, aber so geht das einfacher in einem Rutsch
N:\>set "zahl=123r"
N:\>echo %zahl% |findstr [0-9][0-9][0-9][0-9] &&echo zahl
N:\>set "zahl=123"
N:\>echo %zahl% |findstr [0-9][0-9][0-9][0-9] &&echo zahl
N:\>set "zahl=1234"
N:\>echo %zahl% |findstr [0-9][0-9][0-9][0-9] &&echo zahl
1234
zahl
3)
echo %Projekttyp%| if not "%Projekttyp:~,2%" == "E" echo kein E oder mehr als zweistellig
echo %Projekttyp%| if not "%Projekttyp:~,2%" == "I" echo kein I oder mehr als zweistellig
/editecho %Projekttyp%| if not "%Projekttyp:~,2%" == "I" echo kein I oder mehr als zweistellig
Gruß
Hallo 3xplor3r!
Eigentlich ist es schwer vorstellbar, dass die ersten beiden Stellen der Eingabe (das bedeutet nämlich "
- und wenn ohnehin nur der Typ eingegeben werden soll, kannst Du ja auch gleich mit
<code ty<pe="plain">if not "%projekt_type%" equ "E" (
prüfen ...
Soferne es übrigens egal wäre, ob "E" oder "e" eingegeben wurde, könntest Du "
Grüße
bastla
Eigentlich ist es schwer vorstellbar, dass die ersten beiden Stellen der Eingabe (das bedeutet nämlich "
~,2
") aus einem einzelnen "E" bestehen <code ty<pe="plain">if not "%projekt_type%" equ "E" (
prüfen ...
Soferne es übrigens egal wäre, ob "E" oder "e" eingegeben wurde, könntest Du "
if /i
" verwenden ...Grüße
bastla

moin Schnucki....
Tu mal die Plörre weg und nimm richtigen Kaffee....
set /p "project_type=[Projekttyp]: "
if not "%projekt_type:~,2%" equ "E" (
if not "%projekt_type:~,2%" equ "E" (
Tu mal die Plörre weg und nimm richtigen Kaffee....

hmmm.....
da hat Bastla eigentlich wie fast immer - recht...
Trotzdem...
"so teste ich sowas..
und rauskommen tut dann...
da hat Bastla eigentlich wie fast immer - recht...
Trotzdem...
"so teste ich sowas..
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
set /p "project_type=[Projekttyp]: "
::Gueltigkeitspruefung
if not "%project_type:~,1%" == "E" (
echo Ungueltigkeit des Projekttypes
call :Projekttyp
)
goto :eof
:Projekttyp
echo if not "%project_type:~,1%" == "E"
:eof
und rauskommen tut dann...
N:\>set /p "project_type=[Projekttyp]: "
[Projekttyp]: E
N:\>if not "E" == "E" (
echo Ungueltigkeit des Projekttypes
call :Projekttyp
)
N:\>goto :eof
N:\>C:\script\tester\123.cmd
N:\>set /p "project_type=[Projekttyp]: "
[Projekttyp]: e
N:\>if not "e" == "E" (
echo Ungueltigkeit des Projekttypes
call :Projekttyp
)
Ungueltigkeit des Projekttypes
N:\>echo if not "e" == "E"
if not "e" == "E"
N:\>goto :eof
N:\>

kleiner Tipp:
der Buchstabensalat von mir mit dem hellblauen Untergrund und den Zeilen, die mit n:\ beginnen, was könnte das sein?
Noch ein Tipp, es ist nicht der Lageplan vom heiligen Gral.
moin,
ich wollt auch mal
Gruß Phil
echo "12"34"1234" |findstr \"[0-9][0-9][0-9][0-9]\">nul && echo %Zahl% ist gueltig || echo %Zahl% ist ungueltig
%Zahl% ist gueltig
(1) Die Projektnummer darf nur 4-stellig sein
set "zahl=1234"
echo %zahl%|findstr /rc:"^[0-9][0-9][0-9][0-9]$" >nul && echo %Zahl% ist gueltig || echo %Zahl% ist ungueltig
1234 ist gueltig
ich wollt auch mal
Gruß Phil
@ph
... wobei sich dann aber vielleicht noch die Frage stellt, ob eher eine Eingabe
oder
zu erwarten wäre ...
Ansonsten fände ich
auch hübsch - bzw in der "Sicherheitsvariante":
oder noch etwas robuster:
Grüße
bastla
... wobei sich dann aber vielleicht noch die Frage stellt, ob eher eine Eingabe
"12"34"1234"
45&7
Ansonsten fände ich
findstr /x "[0-9][0-9][0-9][0-9]"
echo "%zahl%"|findstr /x \"[0-9][0-9][0-9][0-9]\"
1
2
3
4
5
2
3
4
5
set "Fehler=true"
setlocal enabledelayedexpansion
echo "!zahl!"|findstr /x \"[0-9][0-9][0-9][0-9]\" >nul && set "Fehler="
endlocal & set "Fehler=%Fehler%"
if defined Fehler goto ...
bastla