Zwei IPs in einer Batch vergleichen
Hallo,
ich habe in zwei Variablen IPs gespeichert.
Vermutlich kann ich per Batch diese nicht vergleichen, da noch die Punkte enthalten sind?
(ich hatte das bei time mit den ":" gehabt) hier habe ich geholfen bekommen diese zu entfernen.
Kann ich die Punkte bei den IPs auch entfernen, bzw. wie kann ich die vergleichen.
funktioniert nicht.
mfg
Peter
ja, ich habe schon gegooglet aber nichts gefunden. Vielleicht bin ich ja auch nur blind.
ich habe in zwei Variablen IPs gespeichert.
Vermutlich kann ich per Batch diese nicht vergleichen, da noch die Punkte enthalten sind?
(ich hatte das bei time mit den ":" gehabt) hier habe ich geholfen bekommen diese zu entfernen.
Kann ich die Punkte bei den IPs auch entfernen, bzw. wie kann ich die vergleichen.
if %ip1% == %ip2% exit
funktioniert nicht.
mfg
Peter
ja, ich habe schon gegooglet aber nichts gefunden. Vielleicht bin ich ja auch nur blind.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 3489846973
Url: https://administrator.de/contentid/3489846973
Ausgedruckt am: 25.11.2024 um 09:11 Uhr
5 Kommentare
Neuester Kommentar
Das muss gehen, wenn nicht, dann hast du wohl Leerzeichen in einer deiner Variablen.
Lass dir mal folgendes ausgeben und prüfe ob zwischen den IPs und den Anführungszeichen irgendwo Leerzeichen existieren
Wenn ja ist klar warum der Vergleich fehlschlägt, sie sind dann eben nicht gleich und du musst die Leerzeichen eliminieren.
Wobei man ja heutzutage eher gleich zur PowerShell greift und nicht mehr zu 80er Jahre Batch 🙈
Lass dir mal folgendes ausgeben und prüfe ob zwischen den IPs und den Anführungszeichen irgendwo Leerzeichen existieren
echo "%ip1%" "%ip2%"
Vermutlich kann ich per Batch diese nicht vergleichen, da noch die Punkte enthalten sind?
Doch natürlich kann man das, es sind nur Strings und Punkte sind in Batch keine Sonderzeichen die man escapen müsste.Wobei man ja heutzutage eher gleich zur PowerShell greift und nicht mehr zu 80er Jahre Batch 🙈
Hallo Zockervogel,
deinen Code habe ich mal nachgestellt und dabei (in meiner Umgebung) auf zwei Probleme gestoßen:
Du kannst ja mal folgende Zeilen, die die Problematik veranschaulichen, in eine Batch packen.
Anscheinend ist das, was du der Variablen %IP1% zuweist nicht in dem Format, dass man sie mit der zweiten Variablen vergleichen kann. Da wird zunächst das erste Zeichen der Variablen verglichen, dann das zweite, u. s. w. Ja, Computer sind dumm und man muss ihnen alles haarklein vorkauen.
Wenn bei dir ie erste Variable korrekt zurechtgestutzt ist, dann klappt es auch mit dem von den Kollegen oben angeführten String-Vergleich.
Zur korrekten Verwendung des IF-Befehls anbei ein Link: SS64 - "IF"
deinen Code habe ich mal nachgestellt und dabei (in meiner Umgebung) auf zwei Probleme gestoßen:
- das Ergebnis aus der wmic-Abfrage beinhaltet sowohl IPv4- als auch IPv6-Adressen. Beide gehen in die Variable %IP1% ein. Folglich kann der Vergleich mit %IP2% nicht wahr sein.
- Was passiert wenn IP1 = 192.168.177.2 und IP2 = 192.168.17.72 ist (und die Batch die Werte ohne Punkte vergleicht? Dann ist IP1 = IP2. Passt auch nicht.
Du kannst ja mal folgende Zeilen, die die Problematik veranschaulichen, in eine Batch packen.
IF 192.168.177.209==192.168.177.209 (ECHO wahr) ELSE (ECHO falsch)
IF 192.168.177.209==192168177209 (ECHO wahr) ELSE (ECHO falsch)
REM Vergleich beide IPs mit Punkte
IF 192.168.177.2==192.168.17.72 (ECHO wahr) ELSE (ECHO falsch)
REM gleiche IPs ohne Punkte
IF 1921681772==1921681772 (ECHO wahr) ELSE (ECHO falsch)
Anscheinend ist das, was du der Variablen %IP1% zuweist nicht in dem Format, dass man sie mit der zweiten Variablen vergleichen kann. Da wird zunächst das erste Zeichen der Variablen verglichen, dann das zweite, u. s. w. Ja, Computer sind dumm und man muss ihnen alles haarklein vorkauen.
Wenn bei dir ie erste Variable korrekt zurechtgestutzt ist, dann klappt es auch mit dem von den Kollegen oben angeführten String-Vergleich.
Zur korrekten Verwendung des IF-Befehls anbei ein Link: SS64 - "IF"
The == comparison operator always results in a string comparison.
Using parentheses or quotes will force a string comparison:
IF (2) GEQ (15) echo "bigger"
IF "2" GEQ "15" echo "bigger"
IF (2) GEQ (15) echo "bigger"
IF "2" GEQ "15" echo "bigger"