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-Key: 191698

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

Printed on: April 18, 2024 at 03:04 o'clock

Member: Lochkartenstanzer
Lochkartenstanzer Sep 24, 2012 updated at 07:37:32 (UTC)
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.
Member: bastla
bastla Sep 24, 2012 updated at 08:25:13 (UTC)
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
Member: Lochkartenstanzer
Lochkartenstanzer Sep 24, 2012 at 08:26:37 (UTC)
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
Member: yakazaa
yakazaa Sep 24, 2012 at 08:34:57 (UTC)
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
Member: yakazaa
yakazaa Sep 24, 2012 at 08:35:18 (UTC)
Goto Top
Auch dir vielen Dank für deine Hilfe !!!
Member: bastla
bastla Sep 24, 2012 at 09:20:22 (UTC)
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
Member: yakazaa
yakazaa Sep 24, 2012 at 12:23:42 (UTC)
Goto Top
Kompliziert - aber vielen Dank für deine ausführliche Erläuterung !!!!