IP Adresse mit Batch auslesen (IPv4+IPv6)

Klingt einfach, mit Batch die IP Adresse des Rechners auslesen und speichern. Hat mich erstaunlich lange aufgehalten eine Lösung zu finden.
Die meisten Tipps bei Google nutzen den Output von ipconfig, suchen nach einem „IP“ ähnlichen String, bearbeiten diesen und filtern die IP.
Beispiel:

:: FUNKTIONIERT NICHT!! BEI AKTUELLEREN SYSTEMEN,SIEHE UNTEN
IPCONFIG |FIND "IP" > %temp%\TEMPIP.txt
FOR /F "tokens=2 delims=:" %%a in (%temp%\TEMPIP.txt) do set IP=%%a
del %temp%\TEMPIP.txt
set IP=%IP:~1%
echo %IP% >%temp%\ip.txt

Seit Windows Vista und IPv6 funktioniert das aber nicht mehr. Ein falscher String wird abgespeichert.
Den String aus der ipconfig zu fischen ist ziemlich ungelenk, eine aktuelle und bessere Lösung zu finden ist nicht so einfach.

Lösung:

for /f "skip=1 tokens=2 delims=[]" %%* in ('ping.exe -n 1 -4 %computername%') Do (set "IP=%%*")

via

Mit dieser Zeile wird die IPv4 Adresse des aktuellen primären Interfaces gespeichert. Mit dem Parameter

-6

statt

-4

wird die primäre IPv6 Adresse in der Variable abgelegt. Funktioniert auch in Win XP, Win 7 und Server 2008.
Ich liebe Einzeiler und finde diese Lösung damit umso charmanter.

Update:
Memo an mich, einzelne Bytes der IP extrahieren:

for /f "skip=1 tokens=2 delims=[]" %%* in ('ping.exe -n 1 -4 %computername%') Do (set "IP=%%*") 
echo %IP%
:: 145.123.2.31
for /f "tokens=1,2,3,4 delims=." %%a in ("%IP%") do set IPb1=%%a&set IPb2=%%b&set IPb3=%%c&set IPb4=%%d
echo %IPb4%
:: 31

Alle Bytes der IP Adresse sind jetzt ansprechbar.
via

7 Kommentare

  1. Super, genau das, was ich gesucht habe, nachdem ich selber daran gescheitert bin. Vor allem: Einfach, schnell, läuft mit unterschiedlichen Betriebssystemen in unterschiedlichen Sprachen – perfekt!

Schreibe einen Kommentar