cascadac
Goto Top

IP-Adresse auromatisch auslesen und als Systemvariable eintragen

Hallo,

ich suche einen Weg wie ich die IP-Adresse automatisch auslesen kann (Batch) und die dann automatisch als Systemvariable (%IP%) nutzen kann

Die IP-Adresse ist eine variable Adresse!


Vielen Dank im voraus!
Kommentar vom Moderator Biber am 07.12.2010 um 21:42:54 Uhr
Beitrag verschoben von "Windows-weiss-nich-genau" nach "Batches from Hell",
auf "Hinreichend beantwortet" gesetzt und geschlossen.

Content-ID: 11573

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

Ausgedruckt am: 23.11.2024 um 09:11 Uhr

Biber
Biber 07.06.2005 um 13:27:41 Uhr
Goto Top
Moin Cascadac,

vom CMD-Prompt:

for /F "tokens=13,*" %i in ('ipconfig^|find "IP-Ad"') do set IP=%j

im Batch entsprechend ein %-Zeichen mehr vor den %i /%j-Variablen


Hope It Helps

Frank / der Biber aus Bremen
cascadac
cascadac 07.06.2005 um 13:33:44 Uhr
Goto Top
Hallo Frank,

ich habe drei verschiedene IP-Adressen (LAN1, LAN2 und ISDN)

kann ich den Ip-Adressen verschiedene Variablen zuordnen?

Gruß cascadac
Biber
Biber 07.06.2005 um 13:58:15 Uhr
Goto Top
Moin cascadac,

sollte mit Bordmitteln machbar sein.
In dem Output von Ipconfig, den ich ja bis auf die Zeile "IP-Adresse" wegwerfe in obigen Beispiel, steht in der zweiten informationshaltigen Zeile das, was Du mit LAN1, LAN2, ISDN beschreibst (z.B "Ethernetadapter LAN:" oder ähnliches).

Also kann man/frau entsprechend dieser Zeile im Batch verzweigen.
Sammel doch mal die drei unterschiedlichen Ipconfig-Outputs zusammen, dann trümmern wir das eben hier im Forum zusammen.

Frank / der Biber aus Bremen
stupsnose
stupsnose 08.07.2005 um 09:49:17 Uhr
Goto Top
Hallo!

Ich habe genau das gleiche Problem.

Sammel doch mal die drei unterschiedlichen
Ipconfig-Outputs zusammen, dann
trümmern wir das eben hier im Forum
zusammen.

Hier mein Output von ipconfig:


Ethernetadapter VMware Network Adapter VMnet8:

Verbindungsspezifisches DNS-Suffix:
IP-Adresse. . . . . . . . . . . . : 192.168.157.1
Subnetzmaske. . . . . . . . . . . : 255.255.255.0
Standardgateway . . . . . . . . . :

Ethernetadapter VMware Network Adapter VMnet1:

Verbindungsspezifisches DNS-Suffix:
IP-Adresse. . . . . . . . . . . . : 192.168.111.1
Subnetzmaske. . . . . . . . . . . : 255.255.255.0
Standardgateway . . . . . . . . . :

Ethernetadapter LAN-Verbindung:

Verbindungsspezifisches DNS-Suffix: xxxx
IP-Adresse. . . . . . . . . . . . : 10.4.36.13
Subnetzmaske. . . . . . . . . . . : 255.255.255.0
Standardgateway . . . . . . . . . : 10.4.36.254

Ethernetadapter MyTap:

Medienstatus. . . . . . . . . . . : Es besteht keine Verbindung

PPP-Adapter VPN xxxx:

Verbindungsspezifisches DNS-Suffix:
IP-Adresse. . . . . . . . . . . . : 10.81.113.2
Subnetzmaske. . . . . . . . . . . : 255.255.255.255
Standardgateway . . . . . . . . . :


Vielen Dank für die Hilfe
Biber
Biber 08.07.2005 um 14:01:59 Uhr
Goto Top
Moin stupsnose,

was genau ist die Frage bzw Anforderung?

Wenn du nur mehrere Variablen %IP1%, %IP2%, ... etc setzen willst, reicht ein Ein-Zeilen Batch:
::--- SetIP-Oneliner.bat
(set /a cnt=1) & For /F "tokens=14" %%a in ('ipconfig^|find "IP-Ad"') do (set IP%cnt%=%%a) & (set /a cnt=%cnt%+1)
::--- SetIP-Oneliner.bat

Bisschen les- und pflegbarer:

::--- SetIPs.bat
@echo off
ipconfig|find "IP-Ad"' >%temp%\allips.txt
ipconfig|find /i "adapter" >%temp%\adapter.txt
set /a cnt =1
For /F %%a in ('%temp%\allips.txt') do (set IP%cnt%=%%a) & (set /a cnt=%cnt%+1)

:: Falls Du die Adapter auch entsprechend in %IPAdapter1%, %IPAdapter2% .. etc haben willst:
set /a cnt =1
For /F %%a in ('%temp%\adapter.txt') do (set IPAdapter%cnt%=%%a) & (set /a cnt=%cnt%+1)
:: zum Anzeigen
set IP
::--- Ende SetIPs.bat---

Output eines "Set IP" vom Dos-Prompt aus sollte sinngemäß sein:
IP1= 192.168.157.1
IP2=192.168.111.1
IP3= 10.4.36.13
..
IPAdapter1=Ethernetadapter VMware Network Adapter VMnet8:
IPAdapter2=Ethernetadapter VMware Network Adapter VMnet1:
IPAdapter3=Ethernetadapter LAN-Verbindung:
...
Gibt aber bestimmt auch aufwändigere Lösungen, aber als kurze Skizze sollte es reichen

Hope That Helps

Frank /der Biber aus Bremen

[edit]
...uups... grade gemerkt..
die %IPs% 1....n korrespondieren NICHT zwingend mit den %IPAdaptern% 1...n, da ich nicht prüfe, welche davon "aktiv" sind.
D.h. dein Adapter mit " ...keine Verbindung.." bringt die Sache durcheinander.

Aber die IP-Variablen passen schon.
Und die wolltest Du ja.

Frank
LordCalf
LordCalf 10.08.2005 um 23:31:05 Uhr
Goto Top
hmm lang isses her das ich mal Batch programmiert habe...

habt ihr eine Idee wie ich folgendes in Batch schreiben kann (oder was anderes)
folgendes soll im Standartbrowser geöffnet werden...

"http://"+ISDN IP+":4242"

Greez und Thx
Lord Calf
Biber
Biber 11.08.2005 um 02:21:02 Uhr
Goto Top
Moin, Lord Calf,

das sollte das kleinste Problem sein...
Wenn Du Dich für eine der vielen IP-Ermittlungsvarianten über "IPConfig" oder "route print" entschieden hat, sollte der Minibatch z.B. so aussehen:

:: ----- GoToMyIP.bat
@echo off
For /F "tokens=14" %%a in ('ipconfig^|find "IP-Ad"') do (set IP=%%a)   
:: Falls du nur einen Adapter hast, passt das...sonst s.o.  ...
:: oder ermitteln über den Output von "route print"... , dann hast Du auf jeden Fall die aktive IP  
Start Http://%IP%:4242
:: ---------end of GoToMyIP.bat

Biber
garfield76
garfield76 30.11.2005 um 10:00:11 Uhr
Goto Top
Servus.


Ist es auch möglich, nur die letzten 1-3 zahlen der ip auszulesen und diese dann an eine buchstabenkombination anzuhängen (zb wg_135) welche ich dann als computernamen verwenden möchte!?
Biber
Biber 30.11.2005 um 13:33:53 Uhr
Goto Top
Moin garfield,

kannst Du natürlich. Das einfachste ist es, diesen Teilstring aus einer ermittelten IP zu lösen - Du weißt ja, dass der "Trenner" ein Punkt ist und das Du den vierten Token willst.
Also Ausgangssituation:IP steht in einer Variablen (Demo am CMD-Prompt):

set "myIP=123.456.130.199"
for /F "Tokens=4 delims=." %i in ("%MyIP%") do set "MyIP_Token4=%i"
set myip
(Output)myIP=123.456.130.199
(Output)MyIP_Token4=199

..oder bei Dir an entsprechender Stelle:

for /F "Tokens=4 delims=." %i in ("%MyIP%") do set "MyIP_CompiName=wg_%i"

HTH Biber
garfield76
garfield76 30.11.2005 um 16:25:59 Uhr
Goto Top
Na erstma vielen dank biber, aber hattest mittlerweile schon rausbekommen face-wink
derauserbayerische
derauserbayerische 07.12.2010 um 12:03:37 Uhr
Goto Top
hi,

ich bin auch auf der Suche wie ich die IP auswerten kann

komme aber mit einem stück script nicht wirklich weiter
kannst du mir vielleicht sagen wie du eine Variabele mit der IP befüllst ? am besten das drite Oktet nur face-wink


@echo OFF
for /F "tokens=13,*" %i in ('ipconfig^|find "IP-Ad"') do set IP=%j
ECHO %i
ECHO %j
PAUSE
Biber
Biber 07.12.2010 um 21:40:00 Uhr
Goto Top
Moin derauserbayerische,

dieser Beitrag riecht aber schon ein bisschen streng.... hast du mal auf das Datum des letzten Kommentars vor deinem geschaut?

Nur kurz: wenn du schon diese Ausgabezeile als Grundlage nehmen willst
 ipconfig| find /"IP-Ad" 
IP-Adresse. . . . . . . . . . . . : xxx.yyy.130.zzz
...was nun wirklich ein absolut mistiger Input für das Rausflöhen des dritten Oktopus ist....

Das mach es doch mit Punkten als Delimiter statt Leerzeichen und genauem Abzählen.
-> wenn vorher 13 Token getrennt mit " " (Leerzeichen) vor der IP kamen... wie viele Punkte waren wohl dabei vor der IP?

Teste es doch am CMD-Prompt:
>for /F "delims=. tokens=15" %i in ('ipconfig^|find "IP-Ad"') do @echo Drittes 0ktett ist [%i]
Drittes 0ktett ist [130]
Falls du lieber umweltbewusst den alten (bzw. uralten) Codeschnipsel wiederverwenden willst, dann eben zwei FOR/F-Anweisungen hintereinandergeschaltet.

>for /F "tokens=13,*" %i in ('ipconfig^|find "IP-Ad"') do @for /f "delims=. tokens=3" %i in ("%j") do @echo Drittes 0ktett ist [%i]  
Drittes 0ktett ist [130]

Aber egal, diesen Beitrag schliesse ich jetzt, wenn noch Fragen bleiben, dann bitte in einem frischen Beitrag.

Grüße
Biber

[edit] Gerade erst bemerkt. ... die Variante vorher im Beitrag war doch das Abzupfen des VIERTEN Oktetts bei Kollege Garfield.
Wieso war denn der Transfer von Garfilelds Oktett 4 auf dein Oktett 3 so schwierig??
[/edit]