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

Prüfen ob Variable nur aus Zahlen besteht

Mitglied: 77575

77575 (Level 1)

12.05.2013 um 21:37 Uhr, 1913 Aufrufe, 10 Kommentare

Hallo,

ich habe ein batch skript das mit 2 variablen aufgerufen werden soll.
wobei die erste variable ein zahl sein muss.
jetzt möchte ich prüfen ob die variable nur aus zahlen besteht. die variable besteht nicht nur aus einer zahl, sondern kann auch aus mehreren zahlen bestehen.

z. bsp. aufruf des skripts:
test.cmd 123 EinWort

mir geht es darum, wenn man sich verschreibt ein fehler ausgegeben wird oder keine zahl angegeben wird ich davon ausgehe das die erste Variable komplett fehlt und ich einen Hinweis ausgebe das die Variable 1 fehlt.

gruss
Mitglied: rubberman
12.05.2013 um 22:03 Uhr
Hallo 01-01-01,

etwa so:
01.
set "first=%1" 
02.
set "second=%2" 
03.
set "third=%3" 
04.
 
05.
if not defined first (echo kein Argument uebergeben) else ( 
06.
  if not defined second (echo nur ein Argument uebergeben) else ( 
07.
    if defined third echo zu viele Argumente uebergeben 
08.
09.
10.
 
11.
setlocal EnableDelayedExpansion 
12.
if defined first echo("!first!"|findstr /rxc:".[0-9][0-9]*." >nul || echo erstes Argument ist nicht numerisch 
13.
endlocal
Grüße
rubberman
Bitte warten ..
Mitglied: bastla
12.05.2013, aktualisiert um 22:25 Uhr
... oder als Alternative:
01.
@echo off & setlocal 
02.
set "OK=%~1" 
03.
for /f "delims=0123456789" %%i in ("%~1") do set "OK=" 
04.
if not defined OK echo Kein oder ungueltiger Parameter angegeben
Geprüft wird so, ob der erste Parameter ausschließlich aus den nach "delims=" angegebenen Ziffern besteht - indem alle Ziffern als Trennzeichen interpretiert werden, kann der Teil nach "do" nur ausgeführt werden, wenn der Parameter auch mindestens ein davon abweichendes Zeichen enthält.

Die Zuweisung des Parameters zur als "Flag" verwendeten Variablen %OK% sorgt dafür, dass auch ein Aufruf ohne Parameter erkannt wird, da dann %OK% von vornherein "not defined" ist ..

Grüße
bastla
Bitte warten ..
Mitglied: Endoro
12.05.2013, aktualisiert um 22:55 Uhr
Hallo 01-01-01,

hast du auch negative Zahlen? Das geht so:

01.
echo "%~1"| findstr /r "^.[1-9][0-9]*.$ ^.-[1-9][0-9]*.$ ^.0.$" && echo alles Zahlen || echo auch Buchstaben
Dieses erkennt führende Nullen als Buchstaben.

Gruss!
Bitte warten ..
Mitglied: 77575
13.05.2013 um 21:08 Uhr
Hallo,

vielen vielen Dank. Das hat mir sehr weitergeholfen.
Negative Zahlen gibt es nicht. Wenn ein Minus davor stehen würde, wäre es schon eine Falscheingabe.

Das ist mein fertiger Code (zum testen nur mit echo Ausgabe):

01.
@echo off & setlocal  
02.
set "PARAMETER1=%1" 
03.
set "PARAMETER2=%2" 
04.
set "PARAMETER1_OK=%~1" 
05.
 
06.
if (%1)==() if (%2)==() goto ALLE_FEHLEN 
07.
 
08.
for /f "delims=0123456789" %%i in ("%~1") do set "PARAMETER1_OK="  
09.
if not defined PARAMETER1_OK goto PARAMETER1_FEHLT 
10.
 
11.
if (%2)==() goto PARAMETER2_FEHLT 
12.
 
13.
goto PARAMETER_PASSEN 
14.
 
15.
:PARAMETER1_FEHLT 
16.
	echo Syntax falsch				 
17.
pause 
18.
goto ENDE 
19.
 
20.
:PARAMETER2_FEHLT 
21.
	echo parameter 2 fehlt 
22.
pause 
23.
goto ENDE 
24.
 
25.
:ALLE_FEHLEN 
26.
	echo keine Paramter angegeben 
27.
pause 
28.
goto ENDE 
29.
 
30.
:PARAMETER_PASSEN 
31.
	echo beide paramterpassen: 
32.
	echo Parameter 1 = %PARAMETER1% 
33.
	echo Paramater 2 = %PARAMETER2% 
34.
pause 
35.
goto ENDE 
36.
 
37.
:ENDE 
38.
 
Jetzt würde ich gern noch den Parameter 2 prüfen. der Parameter 2 muss einem Wort aus einer Textdatei entsprechen.
In der Textdatei stehen pro Zeile ein Begriff.
z. Bsp.
Aachen
München
Berlin
Hamburg
Frankfurt

Jetzt soll geprüft werden das Parameter 2 genau eines dieser Worte ist.
So das z. Bsp. der falschgeschrieben Begriff Berliin zu einem Fehler führt.

gruss 01
Bitte warten ..
Mitglied: rubberman
13.05.2013 um 21:17 Uhr
Hallo 01-01-01,

FINDSTR könnte auch hier weiterhelfen.
01.
findstr /xc:"%2" "liste.txt" >nul || echo Nicht in der Liste.
Grüße
rubberman
Bitte warten ..
Mitglied: bastla
13.05.2013, aktualisiert um 22:01 Uhr
bzw etwas sicherer (und damit "/c:" Sinn macht ):
findstr /xc:"%~2" "liste.txt" >nul || echo Nicht in der Liste.
und eventuell auch "/ixc:" ...
BTW:
if (%1%2)==() goto ALLE_FEHLEN
wäre immer noch zu viel (ohne Parameter 1 gibt es auch keinen Parameter 2) ...

Grüße
bastla
Bitte warten ..
Mitglied: 77575
14.05.2013 um 18:05 Uhr
Hallo,

das funktioniert nicht.
er zeigt mir immer an "Nicht in der Liste.", auch wenn ich den Parameter richtig angebe.

gruss 01
Bitte warten ..
Mitglied: bastla
14.05.2013 um 18:25 Uhr
Hallo 01-01-01!

Mögliche Fehlerquellen:
  • Du verwendest nicht "/ixc:" - dann wird auch Groß-/Kleinschreibung unterschieden.
  • Wenn der Parameter Umlaute ("München") enthält, müsste die Liste im ASCII-Format vorliegen.
  • In der Liste gibt es Leerzeichen oder TABs an Beginn oder Ende der Zeile (verglichen wird immer die gesamte Zeile).

Grüße
bastla
Bitte warten ..
Mitglied: rubberman
14.05.2013, aktualisiert um 18:35 Uhr
Hallo Zusammen.

Und noch eine potenzielle Fehlerquelle:
Der Zeichensatz der Textdatei ist nicht ASCII / ANSI, sondern UTF-8 oder Unicode ...

Grüße
rubberman
Bitte warten ..
Mitglied: Endoro
14.05.2013 um 22:02 Uhr
Zitat von 77575:
das funktioniert nicht.
er zeigt mir immer an "Nicht in der Liste.", auch wenn ich den Parameter richtig angebe.
poste den/die Text(e)/-teil(e) oder lade ihn/sie auf Pastebin.

Gruss!
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Variable auf Inhalt prüfen
gelöst Frage von PinkFLuffyUnicornBatch & Shell1 Kommentar

Hi, ich sitze jetzt schon den halben tag daran eine if schleife zu erstellen die mir sagt ob Variable ...

Batch & Shell

Prüfen ob Variablen inhalt Buchstaben enthält

Frage von IForeverBatch & Shell7 Kommentare

Hallo administrator.de! Ich habe ein kleines Logikproblem, welches ich gerne lösen, bzw. erklärt haben möchte, sollte es so gar ...

Batch & Shell

Variable mit mehreren Werten durch eine Zahl teilen - Linux

gelöst Frage von lapvikaBatch & Shell2 Kommentare

Hallo zusammen, einer Variablen werden mehrere Werte (Zahlen) zugewiesen. Ich möchte nun all diese Werte (Zahlen) die der Variablen ...

Batch & Shell

Batch - Random Zahl in Variable und Textdatei abspeichern

gelöst Frage von citroendsvierBatch & Shell8 Kommentare

Ich sitze an einer batch, die u.a. folgende Schritte abarbeiten soll: 1.: Namen einer anderen Batch aus einer Textdatei ...

Neue Wissensbeiträge
Windows 10

USB Maus und Tastatur versagen Dienst unter Windows 10

Erfahrungsbericht von hardykopff vor 1 TagWindows 105 Kommentare

Da steht man ziemlich dumm da, wenn der PC sich wegen fehlender USB Tastatur und Maus nicht bedienen lässt. ...

Administrator.de Feedback
Update der Seite: Alles zentriert
Information von Frank vor 2 TagenAdministrator.de Feedback18 Kommentare

Hallo User, die größte Änderung von Release 5.8 ist das Zentrieren der Webseite (auf großen Bildschirmen) und ein "Welcome"-Teaser ...

Humor (lol)

WhatsApp-Nachrichten endlich auch per Bluetooth versendbar

Information von BassFishFox vor 2 TagenHumor (lol)4 Kommentare

Genau darauf habe ich gewartet! ;-) Der beliebte Messaging-Dienst WhatsApp erhält eine praktische neue Funktion: Ab dem nächsten Update ...

Google Android

Googles "Android Enterprise Recommended" für Unternehmen

Information von kgborn vor 3 TagenGoogle Android3 Kommentare

Hier eine Information, die für Administratoren und Verantwortliche in Unternehmen, die für die Beschaffung und das Rollout von Android-Geräten ...

Heiß diskutierte Inhalte
Router & Routing
WRT keine Verbindung zum Web Interface
Frage von ILeonardRouter & Routing15 Kommentare

Hallo, Ich habe einen TP-Link WR841n mit wrt geflasht, das Problem ist ich kann mich mit 192.168.1.1 nicht verbinden. ...

Windows Server
Standortvernetzung zu einem Strato VServer (Windows)
Frage von matzefratze81Windows Server10 Kommentare

Moin, ich komme aus einem Enterprise-Umfeld und habe den Fehler gemacht, dass ich mich auf ein kleines Unternehmen eingelassen ...

Grafikkarten & Monitore
4k EIZO Monitor, Fernseher und Splitter
Frage von LerxxeyGrafikkarten & Monitore9 Kommentare

Hallo Zusammen, vielleicht könnt ihr mir bei einem Problem helfen wo ich einfach nicht mehr weiterkomme Und zwar haben ...

Humor (lol)
Nerd Zeitschrift gesucht
Frage von 2SeitenHumor (lol)6 Kommentare

Hey Zusammen, Ich suche eine Zeitschrift bei der es ums technische Basteln geht. Pc zusammenschrauben, Arduino Projekte, Server Tipps ...