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

Frage Entwicklung Batch & Shell

Gültigkeitsprüfungen von Variablen

Mitglied: 3xplor3r

3xplor3r (Level 1) - Jetzt verbinden

20.04.2012 um 09:50 Uhr, 2430 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
Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 1 TagLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 2 TagenTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Sicherheit

Meltdown und Spectre: Wir brauchen eine "Abwrackprämie", die die CPU-Hersteller bezahlen

Information von Frank vor 2 TagenSicherheit12 Kommentare

Zum aktuellen Thema Meltdown und Spectre: Ich wünsche mir von den CPU-Herstellern wie Intel, AMD oder ARM eine Art ...

Sicherheit

Meltdown und Spectre: Realitätscheck

Information von Frank vor 2 TagenSicherheit10 Kommentare

Die unangenehme Realität Der Prozessorfehler mit seinen Varianten Meltdown und Spectre ist seit Juni 2017 bekannt. Trotzdem sind immer ...

Heiß diskutierte Inhalte
Batch & Shell
Meltdown Microsoft Prüf Script - .zip Datei leider leer
gelöst Frage von MasterBlaster88Batch & Shell13 Kommentare

Hallo zusammen, ich patche gerade unsere Windows Server bzgl. der Meltdown Lücke. Patch vorhanden, Reg Keys gesetzt Um das ...

Batch & Shell
Shell-Skript - Syntax error: Unterminated quoted string
Frage von newit1Batch & Shell13 Kommentare

Hallo Ich schreibe ein Skript das eine CSV-Datei in eine mySQL Datenbank schieben soll. Bekomme nach start des Skrips ...

E-Mail
Erfahrungen mit hMailServer gesucht
Frage von it-fraggleE-Mail10 Kommentare

Hallo, meine neue Stelle möchte einen eigenen Mailserver. Ich als Linuxkind war direkt geistig mit Postfix dabei. Leider wollen ...

Entwicklung
VBS: alle PDF-Dateien in einem Ordner gleichzeitig öffnen
gelöst Frage von JuweeeEntwicklung9 Kommentare

Hallo, ich habe in deiner Ordnerstruktur (.\Tagesberichte\xx.18\) mehrere dynamische PDF-Formulare (mit LCD erstellt). Die Berichtsformulare sind im Layout alle ...