Wert Exakt ! finden (z.B. eine IP-Adresse)
Hallo *hust*
ich mal wieder. Ich hätte da gern mal ein Problem
Ich habe 2 Source-Dateien, deren Formatierung (Trennzeichen etc.) ich mir selbst zusammenbaue.
In beiden Dateien befinden sich neben IP-Adressen noch andere Werte, die ich per suche nach IP-Adresse miteinander mergen mächte. Also nur bestimmte Werte aus beiden Dateien.
Beispiel-Datei 1
Beispiel-Datei 2
Wenn jetzt für jede IP aus Beispiel-Datei 1 eine schleife ausgeführt wird, die diese IP in der zweiten Datei sucht und die dazugehörigen Werte ermittelt.....
findet diese Funktion leider auch IP-Adresen in der der die erste UP-Adresse nur enthalten, nicht aber die gleiche ist.
Also die suche nach 10.11.12.13 findet 10.11.12.13 UND 10.11.12.130
kennt ihr irgendeinen Ansatz der mir hier weiterhelfen könnte ?
Wenn ich mal laut nachdenke kann dieser Sonderfall ja nur an der letzten Stelle auftreten. hm oder ?
Könnte ich dann also evtl bei der Quell-IP die Länge der IP ermitteln und dieses als Bedingung für das finden des Wertes in der Datei2 benutzen oder so ?
also 10.11.12.13 hat (mit Punkten) 11 Zeichen
suche nach 10.11.12.13 -> finden von 10.11.12.130 schauen wv Zeichen wenn nicht genau 11 Zeichn dann nicht korrekt .. oder so ??
sollte an einer anderen Stelle eine IP 1 zeichen weniger haben so würde die suche an sich schon fehlschlagen und es zu einem vergleich der
*schwitz*
habt ihr andere Vorschläge oder wenn mein Ansatz ganz gut klingt .. wie ermittle ich die Länge eines Wertes ?
Gruß, Jan
ich mal wieder. Ich hätte da gern mal ein Problem
Ich habe 2 Source-Dateien, deren Formatierung (Trennzeichen etc.) ich mir selbst zusammenbaue.
In beiden Dateien befinden sich neben IP-Adressen noch andere Werte, die ich per suche nach IP-Adresse miteinander mergen mächte. Also nur bestimmte Werte aus beiden Dateien.
Beispiel-Datei 1
10.11.12.13;-;-;das ist eine Lustige Adresse
10.11.12.14;-;-;das ist komisch
10.11.12.13;-;12233;irgendwas1
10.11.12.13;-;48433;irgendwas2
10.11.12.14;-;98734;irgendwas3
10.11.12.140;-;976;irgendwas4
Wenn jetzt für jede IP aus Beispiel-Datei 1 eine schleife ausgeführt wird, die diese IP in der zweiten Datei sucht und die dazugehörigen Werte ermittelt.....
for /f "tokens=1,2 delims=;" %%i in ('findstr /c:"10." %SourceMergeFile%') do (
call :Compare %%i %%j
)
:compare
set "sIP=%1"
set "ippName=%2"
for /f "tokens=1,2,3,4 delims=;" %%a in ('findstr /c:"%sIP%" %SourceCompareFile%') do (
echo %%a;%ippname%;%%c;%%d >> %CheckFile02%
findet diese Funktion leider auch IP-Adresen in der der die erste UP-Adresse nur enthalten, nicht aber die gleiche ist.
Also die suche nach 10.11.12.13 findet 10.11.12.13 UND 10.11.12.130
kennt ihr irgendeinen Ansatz der mir hier weiterhelfen könnte ?
Wenn ich mal laut nachdenke kann dieser Sonderfall ja nur an der letzten Stelle auftreten. hm oder ?
Könnte ich dann also evtl bei der Quell-IP die Länge der IP ermitteln und dieses als Bedingung für das finden des Wertes in der Datei2 benutzen oder so ?
also 10.11.12.13 hat (mit Punkten) 11 Zeichen
suche nach 10.11.12.13 -> finden von 10.11.12.130 schauen wv Zeichen wenn nicht genau 11 Zeichn dann nicht korrekt .. oder so ??
sollte an einer anderen Stelle eine IP 1 zeichen weniger haben so würde die suche an sich schon fehlschlagen und es zu einem vergleich der
*schwitz*
habt ihr andere Vorschläge oder wenn mein Ansatz ganz gut klingt .. wie ermittle ich die Länge eines Wertes ?
Gruß, Jan
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 80748
Url: https://administrator.de/contentid/80748
Ausgedruckt am: 04.11.2024 um 22:11 Uhr
4 Kommentare
Neuester Kommentar
Eine geringe Abwandlung deiner Batch aus dem eingangsposting wäre so:
So wird dann nach "10.11.12.13;" gesucht und kann auch ncith mit "10.11.12.130" verwechselt werden.
miniversum
:compare
set "sIP=%1"
set "ippName=%2"
for /f "tokens=1,2,3,4 delims=;" %%a in ('findstr /c:"%sIP%;" %SourceCompareFile%') do (
echo %%a;%ippname%;%%c;%%d >> %CheckFile02%
So wird dann nach "10.11.12.13;" gesucht und kann auch ncith mit "10.11.12.130" verwechselt werden.
miniversum