Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Gültigkeitsprüfungen von Variablen

Mitglied: 3xplor3r

3xplor3r (Level 1) - Jetzt verbinden

20.04.2012 um 09:50 Uhr, 2443 Aufrufe, 14 Kommentare

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
Mitglied: Penny.Cilin
20.04.2012 um 09:53 Uhr
Hallo,

bzgl. der Variablenexpansion mittels Set /A solltest Du
01.
 SETLOCAL ENABLEDELAYEDEXPANSION 
aktivieren. Und daran denken, daß die Varibalen mit !<variable>! angesrpochen werden.
Dann sollte es funktionieren.
Bitte warten ..
Mitglied: 60730
20.04.2012 um 09:58 Uhr
moin,

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
edit nicht hybsch, aber würgungsvoll
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
/edit

Gruß
Bitte warten ..
Mitglied: 3xplor3r
20.04.2012 um 10:57 Uhr
Das ist schonmal Spitze.

Eine Sache bleibt offen, wenn ich bsw. beim der Projekttyp einen Fehler feststelle, dann mit call den Block zur Eingabe nochmals aufrufe, einen richtigen Wert eingebe, schlägt die Prüfung dennoch fehl.

01.
set /p "project_type=[Projekttyp]: " 
02.
  ::Gueltigkeitspruefung 
03.
  if not "%projekt_type:~,2%" equ "E" ( 
04.
    echo Ungueltigkeit des Projekttypes  
05.
    call :Projekttyp 
06.
  )
Bitte warten ..
Mitglied: bastla
20.04.2012 um 11:35 Uhr
Hallo 3xplor3r!

Eigentlich ist es schwer vorstellbar, dass die ersten beiden Stellen der Eingabe (das bedeutet nämlich "~,2") aus einem einzelnen "E" bestehen - und wenn ohnehin nur der Typ eingegeben werden soll, kannst Du ja auch gleich mit
01.
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
Bitte warten ..
Mitglied: 60730
20.04.2012 um 11:41 Uhr
moin Schnucki....

set /p "project_type=[Projekttyp]: "
if not "%projekt_type:~,2%" equ "E" (

Tu mal die Plörre weg und nimm richtigen Kaffee....
Bitte warten ..
Mitglied: 3xplor3r
20.04.2012 um 11:48 Uhr
01.
set /p "project_type=[Projekttyp]: " 
02.
  ::Gueltigkeitspruefung 
03.
  if not "%project_type:~,1%" == "E" ( 
04.
    echo Ungueltigkeit des Projekttypes  
05.
    call :Projekttyp 
06.
  )
Trotz der kleinen Unaufmerksamkeit bleibt mir der Fehler erhalten, dass ich nur noch in den IF-Block springe egal was die Eingabe bringt.
Bitte warten ..
Mitglied: 60730
20.04.2012 um 11:57 Uhr
hmmm.....

da hat Bastla eigentlich wie fast immer - recht...
Trotzdem...
"so teste ich sowas..
01.
set /p "project_type=[Projekttyp]: " 
02.
  ::Gueltigkeitspruefung 
03.
  if not "%project_type:~,1%" == "E" ( 
04.
    echo Ungueltigkeit des Projekttypes  
05.
    call :Projekttyp 
06.
07.
goto :eof 
08.
:Projekttyp 
09.
echo  if not "%project_type:~,1%" == "E" 
10.
 
11.
: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:\>
Bitte warten ..
Mitglied: 3xplor3r
20.04.2012 um 14:47 Uhr
Eure Beitrage habe mitunter geholfen den Fehler zu finden, danke.

01.
:Projekttyp 
02.
set /p "project_type=[Projekttyp]: " 
03.
  ::Gueltigkeitspruefung 
04.
  if not "%project_type%" == "E" ( 
05.
    if not "%project_type%" == "I" ( 
06.
      echo Ungueltigkeit des Projekttypes [E/I] 
07.
      call :Projekttyp 
08.
09.
  )
Bleibt nur noch (1) zu testen.
Bitte warten ..
Mitglied: Skyemugen
20.04.2012 um 14:57 Uhr
01.
echo "%Zahl%" |findstr \"[0-9][0-9][0-9][0-9]\">nul && echo %Zahl% ist gueltig || echo %Zahl% ist ungueltig
Bitte warten ..
Mitglied: 60730
20.04.2012 um 15:51 Uhr
Zitat von 3xplor3r:
Bleibt nur noch (1) zu testen.

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.
Bitte warten ..
Mitglied: Skyemugen
20.04.2012 um 16:48 Uhr
@T-Mo,

kleiner Tipp:

fünfstellige Nummern werden bei dir auch gültig

(1) Die Projektnummer darf nur 4-stellig sein
Bitte warten ..
Mitglied: pieh-ejdsch
20.04.2012 um 23:21 Uhr
moin,

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
Bitte warten ..
Mitglied: bastla
20.04.2012 um 23:28 Uhr
@PH
... wobei sich dann aber vielleicht noch die Frage stellt, ob eher eine Eingabe
"12"34"1234"
oder
45&7
zu erwarten wäre ...

Ansonsten fände ich
findstr /x "[0-9][0-9][0-9][0-9]"
auch hübsch - bzw in der "Sicherheitsvariante":
echo "%zahl%"|findstr /x \"[0-9][0-9][0-9][0-9]\"
oder noch etwas robuster:
01.
set "Fehler=true" 
02.
setlocal enabledelayedexpansion 
03.
echo "!zahl!"|findstr /x \"[0-9][0-9][0-9][0-9]\" >nul && set "Fehler=" 
04.
endlocal & set "Fehler=%Fehler%" 
05.
if defined Fehler goto ...
Grüße
bastla
Bitte warten ..
Mitglied: pieh-ejdsch
20.04.2012 um 23:39 Uhr
moin bastla,

ich gehe absolut nicht davon aus, dass es mehr oder weniger möglich sein könnte einen Parameter Fälschlicherweise Durch den Stapel zu lassen.

Um nur dass Reinzulassen was auch darf, kommt es auf die Genauigkeit an.

Ich stell mir grad mein Email(le) Filter vor .....

Gruß Phil
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Mit zusammengesetzter Variable auf andere Variable zugreifen

gelöst Frage von abiberBatch & Shell2 Kommentare

Hallo zusammen, ich möchte in einer Batch Datei über Robocopy auf mehrere Rechner Dateien verteilen. Dazu möchte ich am ...

Batch & Shell

Datei als Variable auslesen und Variable ändern

gelöst Frage von chainsawBatch & Shell1 Kommentar

Hallo Profis, ich komme mit folgendem Problem nicht weiter: In dem Verzeichnis "C:\logfiles" landen bei mir Log-Dateien. Diese Log-Dateien ...

Batch & Shell

Variablen Nutzen welche aus dem Inhalt von Variablen erstellt werden

gelöst Frage von der-blobBatch & Shell4 Kommentare

Hallo Zusammen, der Titel ist zwar nicht direkt aussage kräftig, aber jedoch weis ich nicht wie ich es beschreiben ...

Batch & Shell

Variablen und Set

gelöst Frage von CerauxBatch & Shell2 Kommentare

Hallo, ich weiß nicht wie man mehrere Wörter in eine Variable machen? Also so: if %var1%%var2% echo Hallo %var1%=Dies ...

Neue Wissensbeiträge
Windows 10

Microcode-Updates KB4090007, KB4091663, KB4091664, KB4091666 für Windows 10

Information von kgborn vor 16 MinutenWindows 10

Kurze Information für Administratoren von Windows 10-Systemen, die mit neueren Intel CPUs laufen. Microsoft hat zum 23. April 2018 ...

iOS
Updates für Iphone und Co
Information von sabines vor 3 StundeniOS

Gestern abend ist iOS 11.3.1 erschienen, ein kleineres Update, dass einige Lücken schließt und "Lahmlegen" nach einem Display Tausch ...

Windows 7

Windows 7 - Server 2008 R2: Exploit für Total Meltdown verfügbar

Information von kgborn vor 1 TagWindows 7

Kleine Information für Administratoren, die für die Updates von Windows 7 SP1 und Windows Server 2008 R2 SP1 verantwortlich ...

Sicherheit

Zero Day-Schwachstelle im Internet Explorer - wird von APT bereits ausgenutzt

Information von kgborn vor 1 TagSicherheit

Im Kernel des Internet Explorer scheint es eine Zero Day-Lücke zu geben, die von staatlichen Akteuren (APT) im Rahmen ...

Heiß diskutierte Inhalte
C und C++
Frage1 C Programmierung-Makefile Frage2 PHP-Programmierung HTTP-Fehler 404
Frage von KatalinaC und C++27 Kommentare

Hallo, ich habe 2 Fragen, die nichts miteinander zu tun haben aber mit denen ich mich gerade beschäftige: 1. ...

LAN, WAN, Wireless
Watchguard T15 VPN Einrichtung
gelöst Frage von thomasjayLAN, WAN, Wireless25 Kommentare

Hallo zusammen, wir möchten gerne über unsere Watchguard T15 einen VPN-Tunnel (Mobile VPN with IPSec) einrichten! Als Client nutzen ...

DSL, VDSL
ISP Wechsel auf Vodefone Koax, Gebäudeverkabelung nur per Cat 7
gelöst Frage von wusa88DSL, VDSL19 Kommentare

Hallo Zusammen, ich bin momentan bei Mnet als Glasfaser Kunde und möchte Preis/Leistungs-Technisch zu Kabel Deutschland / Vodafone wechseln. ...

Hyper-V
HyperV DC + DNS + AC
gelöst Frage von HardstylesHyper-V16 Kommentare

Hallo kann mir jemand sagen wieso meine Domänen Computer kein Internetzugang erhalten? Ich hab hier ein Server wo die ...