Home CMD/Batch get active interface name as variable

# CMD/Batch get active interface name as variable

Tanckom
1#
Tanckom Published in 2017-09-12 15:23:38Z
 I'm currently having a hard time figuring out how to get the active interface names as a variable output which can be later on used in the code. I've been reading here a bit, how to use the cmd output as a variable, but I need the specific names which are active. My current code:  @echo off netsh interface show interface FOR /F "tokens=* USEBACKQ" %%F IN (netsh interface show interface) DO ( SET var=%%F ) ECHO %var% Pause  Which displays this image: We can see that due to netsh interface show interface , two connected interfaces and two non connected are shown. However, how do i get f.ex. Ethernet 2 and WiFi as a variable only like %%V ?
Stephan
2#
 to get the names of all interfaces that are connected: FOR /F "tokens=3,*" %%A IN ('netsh interface show interface^|find "Connected"') DO echo %%B  Note: this is language dependent. For a language independent solution use wmic (which has it's own traps and oddities): for /f "tokens=2 delims==" %%a in ('wmic nic where (NetConnectionStatus^=2^) get name /value') do ( for /f "delims=" %%b in ("%%a") do echo %%b )  The inner for is to handle the ugly wmic line endings
 Because the output of WMIC has the 'ugly'  line endings and the value of NetConnectionID will often have unwanted trailing spaces, I'd suggest something more like this to retrieve only connected network adapters as variables: @Echo Off Set "i=0" For /F "Skip=1Delims=" %%A In ( 'WMIC NIC Where "NetConnectionStatus=2" Get NetConnectionID' ) Do For /F "Delims=" %%B In ("%%A") Do Call :Sub %%B Set NIC[ Timeout -1 Exit/B :Sub Set/A i+=1 Set "NIC[%i%]=%*"