CMD / Batch obtient le nom de la connexion Internet active
Je sais comment obtenir le nom de l'interface
netsh interface show interface
Je sais aussi comment obtenir les noms de wifi
netsh wlan show profiles
Si je suis connecté à l'adaptateur Wi-Fi 2, je serai connecté à l'un des profils wlan.
Comment puis-je obtenir le même nom de profil pour une connexion LAN? Il devrait être "TP-Link 2.4 2" selon mes paramètres de connexion réseau. Mais si j'essaye
netsh lan show profiles
mais il n'y a toujours pas de nom d'Ethernet. Je me demande où cela entre dans Windows 10, car je n'ai sûrement pas tapé le nom d'Ethernet.
L'objectif ultime est d'imprimer le nom de la connexion active, donc si Ethernet 2 est actif, TP-Link 2.4 2, si le wi-fi est actif, par exemple TP-Link 2.4
Réponses
Essayez avec ce code Batch en utilisant l'applet de commande Get-NetAdapteravec Powershell v3
@echo off
Title Get Net Adapter Index
@for /f "tokens=1 skip=3 delims= " %%a in (
'Powershell -C "Get-NetAdapter -Physical | Where-Object { $_.Status -eq 'Up' } | Select-Object -Property ifIndex"'
) Do (
Set "Index=%%a"
)
echo NetAdapter Index = %Index%
pause
Et si vous souhaitez obtenir plus d'informations telles que Interfaceet MACAddress, vous pouvez essayer comme ce code ci-dessous:
@echo off
Title Get Net Adapter Index,InterfaceDescription,MacAddress
@for /f "tokens=1,2,3 skip=1 delims=," %%a in (
'Powershell -C "Get-NetAdapter -Physical | Where-Object { $_.Status -eq 'Up' } | Select-Object -Property ifIndex,InterfaceDescription,MacAddress | ConvertTo-Csv -NoTypeInformation"'
) Do (
Set "Index=%%~a"
Set "Interface=%%~b"
Set "MacAddress=%%~c"
)
echo( Index = %Index%
echo( Interface = %Interface%
echo( MacAddress = %MacAddress%
Pause & Exit
Je n'ai pas les moyens de tester les connexions Ethernet - je peux cependant montrer des moyens de capturer et de filtrer la sortie des commandes netsh vers des variables, ce que vous devrez faire pour votre objectif ultime.
For /Fpermet la capture de la sortie de la commande lors de son exécution- Marquer les variables en conjonction avec les vérifications de condition if peuvent isoler des sections de sortie d'intérêt, ou définir des variables de sortie uniquement lorsque les conditions souhaitées sont, et.
- des boucles for / F supplémentaires peuvent être utilisées pour capturer des chaînes contenant la valeur cible de la sortie isolée
@Echo off
IF not "!![" == "[" SETLOCAL enabledelayedexpansion
For /F "Tokens=2,3,4 Delims=[]" %%G in (' Set Connection[ 2^> Nul ')Do Set "Connection[%%G][%%H][%%I]="
(
For /F "Delims=" %%G in ('netsh wlan show interfaces') Do (
Set "Line=%%G"
For /F "Tokens=1* Delims=: " %%i in (' Echo/!Line!^|findstr.exe /LIC:":" 2^> nul ')Do (
Set "%%i=%%j"
)
If /I "!State!" == "Connected" If not "!Profile!" == "" (
Set "Connection[!SSID!][!Name!][!GUID!]=Connected"
Set "State="
Set "Profile="
)))
(For /F "Tokens=2,3,4 Delims=[]" %%G in (' Set Connection[ ')Do (Echo Profile:%%G Type:%%H GUID:%%I)) 2> nul || Echo/No connection active.
Exemple de sortie (une connexion, valeur GUID modifiée à partir de la sortie réelle)
Profile:T3RRY Type:Wi-Fi GUID:379552d8-1472-3b14-bf55-21eeb0c4eb1c