IP-Adresse als variable einsetzen?
also ich wollte eine batch-datei code, die mir meine infos gibt, welche schon as variablen gespeichert sein sollten, dass zb %DATE% als datum immer aktuell ist.
den variablen-namen, den der computer als speicherort fürs datum nommt, kenne ich bereits (=%DATE%).
ich hab also den befehl echo datum= %DATE%
das selbe brauche ich aber noch für die IP und MAC. falls es diese variablen nicht gäbe könnte man bei mac ja zb eine variable erstellen, die immer die selbe wäre. meine ip- adresse ändert sich aber ja immer. wie dann?
ich hoffe auf hilfe von einer der beiden möglichkeiten und schonmal danke im vorraus
2 Antworten
Von Haus aus gibt es keine vordefinierten EnvironmentVariablen für Mac Ip usw.
Aber man kan die Parameter abfragen und Variablen zuweisen.
Die Externe IP, die jeder Internetserver zu sehen bekommt muss man Durch eine Serveranfrage ermitteln (vorzugsweise einen Server der nur die IP auf einer Leeren seite schreibt)
...das erledigt ein Javascript-programm:
new ActiveXObject('Microsoft.XMLHTTP')) { open('GET', 'http://api.ipify.org', false);send();WSH.Echo(responseText);}
Die Mac und diverse Andere Werte liefert
wmic nic
die configuration dazu
wmic nicconfig
Alles zusammen inclusiv des filterns der für unsere Variablen relevanten Daten erleidigt eine Batch.
@echo off
rem javascript für IPLookupserver-verbindung
echo with (new ActiveXObject('Microsoft.XMLHTTP')) { open('GET', 'http://api.ipify.org', false);send();WSH.Echo(responseText);}>"%temp%\getExtIP.js"
rem ...ausführen (dauert etwas Zeit für die Antwort des servers)
for /f "tokens=*" %%a in ('cscript /nologo "%temp%\getExtIP.js" ') do (
set "__ExtIP=%%~a"
)
echo Externe IP=%__ExtIP%
rem wmi-Abfrage Netzwerkadapter gefiltert...
for /f "skip=2 tokens=2-6 delims=," %%a in ('"wmic nic where NetEnabled=TRUE get AdapterType, MACAddress, Name, Speed, TimeOfLastReset /format:csv"') do (
set "__AdapterType=%%~a"
set "__MACAddress=%%~b"
set "__AdapterName=%%~c"
set "__AdapterSpeed=%%~d"
)
echo AdapterType=%__AdapterType%
echo MACAddress=%__MACAddress%
echo AdapterName=%__AdapterName%
echo AdapterSpeed=%__AdapterSpeed%
rem wmi-abfrage Netzwerkonfikuration gefiltert
for /f "usebackq skip=2 tokens=2-5 delims=,;{}" %%a in (`"wmic nicconfig where MACAddress='%__MACAddress%' get ipaddress /format:csv"`) do (
set "__internIPv4=%%~a"
set "__IPv6.vbl=%%~b"
set "__IPv6.2=%%~c"
set "__IPv6.temp=%%~d"
)
echo Interne IPv4 =%__internIPv4%
echo Verbindungslokale IPv6-Adresse =%__IPv6.vbl%
echo 2. IPv6 =%__IPv6.2%
echo temporaere IPv6=%__IPv6.temp%
pause
wie Du aus den ungefilterten wmic-Aufrufen ersehen kannst, gibt es noch viel mehr als das was ich in Variablen gespeichert habe. Ich hatte nur keine Lust noch mehr Variablen anzulegen...
update...ups eine IPv6 vergessen...
::wie oben
for /f "usebackq skip=2 tokens=2-6 delims=,;{}" %%a in (`"wmic nicconfig where MACAddress='%__MACAddress%' get ipaddress /format:csv"`) do (
set "__internIPv4=%%~a"
set "__IPv6.vbl=%%~b"
set "__IPv6.2=%%~c"
set "__IPv6.1=%%~d"
set "__IPv6.temp=%%~e"
)
echo Interne IPv4 =%__internIPv4%
echo Verbindungslokale IPv6-Adresse =%__IPv6.vbl%
echo 1. IPv6 =%__IPv6.1%
echo 2. IPv6 =%__IPv6.2%
echo temporaere IPv6=%__IPv6.temp%
::dito
Die IP/MAC Adresse wird nicht als Umgebungsvariable ausgegeben.