yakazaa
Goto Top

Rechnernamen anhand IP aus HOST Tabelle auslesen

Hallo zusammen,

ich möchte gerne aus einer HOST Tabelle einen Rechnernamen auslesen, als Suchkriterium dient mir die IP.

Früher wurde mir hier schonmal "andersherum" geholfen:
FOR /F "" %%I in ('findstr /i "%COMPUTERNAME%$" C:\Windows\System32\drivers\etc\hosts') DO Set IP=%%I
Hier wurde die IP anhand des Computernamens ermittelt.

Ändere ich das Skript nun wie folgt ab, bekomme ich natürlich immernoch die IP:
FOR /F "" %%I in ('findstr /i "%TEST_IP%" C:\Windows\System32\drivers\etc\hosts') DO Set IP=%%I
Was muss ich noch ändern ?

Danke euch schonmal für eure Antworten !!!

Content-ID: 191698

Url: https://administrator.de/contentid/191698

Ausgedruckt am: 21.11.2024 um 22:11 Uhr

Lochkartenstanzer
Lochkartenstanzer 24.09.2012 aktualisiert um 09:37:32 Uhr
Goto Top
Zitat von @yakazaa:
Ändere ich das Skript nun wie folgt ab, bekomme ich natürlich immernoch die IP:
> FOR /F "" %%I in ('findstr /i "%TEST_IP%" C:\Windows\System32\drivers\etc\hosts') DO Set
IP=%%I
Was muss ich noch ändern ?

Moin,

Ganz einfach: Du mußt den For-Befehl so anpassen, daß er nicht nur die IP-Adresse sondern den namen ausspuckt. Wie? Weiß ich nicht, da ich für sowas grep und awk nehme.

lks

PS: beachte, daß hinter der IP-Adresse mehrere Hostnamen stehen können!


Nachtrag: es sollte mit der Option tokens in den Anführungsstrichen beim FOR funktionieren.
bastla
bastla 24.09.2012 aktualisiert um 10:25:13 Uhr
Goto Top
@lks
Nachtrag: es sollte mit der Option tokens in den Anführungsstrichen beim FOR funktionieren.
... womit Du völlig recht hast:
FOR /F "tokens=1*" %%I in ('findstr /i "%TEST_IP%" C:\Windows\System32\drivers\etc\hosts') DO Set "Hostname=%%J"
Grüße
bastla

P.S.: Warum denn in die Ferne schweifen face-wink: Tutorial zur FOR-Schleife
Lochkartenstanzer
Lochkartenstanzer 24.09.2012 um 10:26:37 Uhr
Goto Top
Zitat von @bastla:
P.S.: Warum denn in die Ferne schweifen face-wink: Tutorial zur FOR-Schleife

Sorry, war halt der erste treffer in google.

Werde mich bessern. face-smile

lks
yakazaa
yakazaa 24.09.2012 um 10:34:57 Uhr
Goto Top
Du bist mein Held - immer wieder !!! face-smile :-T
Vielen Dank !!!

2 Fragen habe ich natürlich jetzt:

Wieso "tokens=1*" bzw. genauer: Wieso "1*" ? Was bedeutet das ?

Wieso klappt das ? face-smile
In der FOR Schleife sagst du Ihm, er solle %%I setzen, die Variable "Hostname" befüllst du aber am Ende mit %%J
yakazaa
yakazaa 24.09.2012 um 10:35:18 Uhr
Goto Top
Auch dir vielen Dank für deine Hilfe !!!
bastla
bastla 24.09.2012 um 11:20:22 Uhr
Goto Top
Hallo yakazaa!

Mit "tokens=1*" legst Du fest, dass nur nach dem ersten Token (=IP-Adresse) anhand der Standardtrennzeichen Leerzeichen und TAB getrennt werden soll - bei weiteren Trennzeichen in der Zeile (LKS hat ja auf die Möglichkeit mehrerer Einträge verwiesen), würde der Rest der Zeile nicht mehr zerlegt, sondern "am Stück" geliefert - daher befinden sich dann in %%I Token 1 (=IP-Adresse) und in %%J alles, was nach dem ersten Delimiter (=Leerzeichen; mehrere aufeinander folgende Trennzeichen werden als nur eines intrepretiert) noch in der Zeile steht ...

Grüße
bastla
yakazaa
yakazaa 24.09.2012 um 14:23:42 Uhr
Goto Top
Kompliziert - aber vielen Dank für deine ausführliche Erläuterung !!!!