tobias3355
Goto Top

Schnittstellenname per batch auslesen und in eine variable schreiben

ich habe dazu im netz folgenden ansatz gefunden

netsh interface show interface | findstr "Dediziert" >%temp%\netsh.tmp
for /F "tokens=1,2,3* delims= " %%i in (%temp%\netsh.tmp) do set lan=%%k
del %temp%\netsh.tmp

leider gibt mir

echo %lan%

nicht wie gewünscht ethernet 6 sondern dediziert aus.

was mache ich falsch??

danke und grüße

Content-ID: 386072

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

Ausgedruckt am: 22.11.2024 um 01:11 Uhr

Pjordorf
Pjordorf 11.09.2018 aktualisiert um 10:45:54 Uhr
Goto Top
Hallo,

Zitat von @tobias3355:
was mache ich falsch??
Nimm anstelle deines %k(%%k) doch mal %l(%%l).

Gruß,
Peter
tobias3355
tobias3355 11.09.2018 um 10:42:51 Uhr
Goto Top
dann bekomme ich eine fehlermeldung.
funktioniert das bei dir mit dem lan=%%I ??
tobias3355
tobias3355 11.09.2018 um 10:45:50 Uhr
Goto Top
mein fehler!
es funktioniert. leider wird mir aber nur das wort "ethernet" angezeigt und
nicht der komplette name "ethernet 6". wie kann ich das "wort" 6 mit in die var schreiben lassen?
tobias3355
tobias3355 11.09.2018 um 10:56:09 Uhr
Goto Top
schreibe ich tokens=4 wird "ethernet" in die var geschrieben.

bei tokens=5 wird "6" in die var geschrieben.

aber wie bekomme ich es hin, dass tokens 5 und 6 in die var geschrieben werden??
Pjordorf
Pjordorf 11.09.2018 um 11:02:16 Uhr
Goto Top
Hallo,

Zitat von @tobias3355:
nicht der komplette name "ethernet 6". wie kann ich das "wort" 6 mit in die var schreiben lassen?
set "lan=%%l"
kann dir helfen.

Gruß,
Peter
tobias3355
tobias3355 11.09.2018 um 11:04:29 Uhr
Goto Top
ich habe nun folgendes probiert...

tokens=4%5
tokens=4,5
tokens=4 5

leider funktioniert das alles nicht.
tobias3355
tobias3355 11.09.2018 um 11:08:29 Uhr
Goto Top
aber set "lan=%%l" habe ich doch geschrieben. das funktioniert soweit ja auch.
nun möchte ich noch die tokens 4 und 5 ausgeben lassen.

grüße
137084
Lösung 137084 11.09.2018, aktualisiert am 13.09.2018 um 11:49:37 Uhr
Goto Top
for /f "tokens=3,*" %%a in ('netsh int show int ^| findstr Dediziert') do @echo %%b  
Mach das vernünftig und vor allem zuverlässig mit WMI, netsh ist ein Auslaufmodell
for /f "tokens=2 delims==" %%a in ('wmic nic where NetEnabled^=True get NetConnectionId /value') do @echo %%a  
Oder auch mit der Powershell
[System.Net.NetworkInformation.NetworkInterface]::GetAllNetworkInterfaces() | ?{$_.OperationalStatus -eq 'Up' -and $_.NetworkinterfaceType -eq 'Ethernet'} | Select -ExpandProperty Name  
Dir sollte aber bewusst sein dass du mehrere Adapter als Ergebnis bekommst sollte der Rechner mehr wie eine aktive Karte haben!
Pjordorf
Pjordorf 11.09.2018 um 11:14:55 Uhr
Goto Top
Hallo,

Zitat von @tobias3355:
aber set "lan=%%l" habe ich doch geschrieben.
Wo, ich kann es nicht erkennen bzw. lesen.
for /F "tokens=1,2,3* delims= " %%i in (%temp%\netsh.tmp) do set "lan=%%l"
das funktioniert.

Gruß,
Peter
tobias3355
tobias3355 11.09.2018 um 11:24:41 Uhr
Goto Top
da kennt sich jemand aus.
funktioniert nun alles wie gewünscht - top !!!


vielen dank.