CMD/Batch 获取活动互联网连接名称

CMD/Batch 获取活动互联网连接名称

我知道如何获取接口名称

netsh interface show interface

接口名称

我还知道如何获取 wifi 的名称

netsh wlan show profiles

WLAN 配置文件

如果我连接到 Wi-Fi 2 适配器,那么我将连接到其中一个 wlan 配置文件。

我如何才能让相同的配置文件名称与局域网连接?根据我的网络连接设置,它应该是“TP-Link 2.4 2”。但如果我尝试

netsh lan show profiles

局域网配置文件

但仍然没有以太网的名称。我想知道它在 Windows 10 中进入了哪里,因为我肯定没有输入以太网的名称。

最终目标是打印活动连接名称,因此,如果以太网 2 处于活动状态,则为 TP-Link 2.4 2,如果 wi-fi 处于活动状态,则例如为 TP-Link 2.4

局域网名称

网络连接

答案1

尝试使用Get-NetAdapterPowershell v3 中的cmdlet 执行此批处理代码


@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

如果您想获取更多信息InterfaceMACAddress您可以尝试下面的代码:

@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

答案2

我缺乏在以太网连接上进行测试的手段 - 但是我可以演示捕获和过滤 netsh 命令输出到变量的方法,这是您实现最终目标所需要做的事情。

  • For /F允许在命令执行时捕获命令输出
  • 与条件检查结合的标志变量可以隔离感兴趣的输出部分,或者仅在满足所需条件时定义输出变量。
  • 可以使用附加的 for /F 循环来从隔离输出中捕获包含目标值的字符串
 @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.

示例输出(一个连接,GUID 值根据实际输出修改)

Profile:T3RRY Type:Wi-Fi GUID:379552d8-1472-3b14-bf55-21eeb0c4eb1c

相关内容