0

    批处理根据关键字获取网络连接名称和网络适配器名称

    2023.07.06 | admin | 152次围观

    已知 getmac /fo list /v 这个命令可以获取到的网络连接列表如下:

    连接名: 蓝牙网络连接

    网络适配器: Bluetooth 设备(个人区域网)

    物理地址: 11-22-33-44-55-66

    传输名称: 媒体已断开连接

    连接名: 本地连接

    网络适配器: Realtek PCIe GBE Family Controller

    物理地址: 22-33-44-55-66-77

    传输名称: \Device\Tcpip_{661AA191-BB37-4C30-8DD4-828E96F0GGGG}

    连接名: 无线网络连接

    网络适配器: Intel(R) Centrino(R) Wireless-N 2230

    物理地址: 33-44-55-66-77-88

    传输名称: 媒体已断开连接

    连接名: 虚拟网络连接

    网络适配器: Microsoft Virtual WiFi Miniport Adapter

    物理地址: 44-55-66-77-88-99

    传输名称: 媒体已断开连接

    批处理根据关键字获取网络连接名称和网络适配器名称

    连接名: SSL连接

    网络适配器: Sangfor SSL VPN CS Support System VNIC

    物理地址: 55-66-77-88-99-00

    传输名称: 媒体已断开连接

    现在需要排除掉网络适配器名称里面包含关键字“Bluetooth”或“Virtual”或“VPN”的网络连接,而且只保留连接名称和网络适配器名称无法找到网络配适器的驱动程序,希望得到的格式如下:

    连接名: 本地连接

    网络适配器: Realtek PCIe GBE Family Controller

    连接名: 无线网络连接

    网络适配器: Intel(R) Centrino(R) Wireless-N 2230

    思路1.bat

    首先获取到符合条件的网络适配器所在行号,然后用这个行号减去2,这样就知道了for命令里面skip多少行就能找到对应的连接名。

    @echo offsetlocal enabledelayedexpansionset "FileTmp=%temp%\NetList.txt">"%FileTmp%" echo,>>"%FileTmp%" getmac /fo list /vfor /f "tokens=1* delims=:" %%i in ('type "%FileTmp%" ^| findstr /n /i "网络适配器:"') do (    set "ThisLine=%%j"    echo,%%j | findstr /v /c:"Bluetooth" /c:"Virtual" /c:"VPN" >nul 2>&1    if !errorlevel! equ 0 (        set /a n=%%i-2        call :GetPreLine !n!        echo,%%j    ))pausegoto :eof
    :GetPreLinefor /f "skip=%1 delims=" %%i in ('type "%FileTmp%"') do ( echo,%%i goto :eof)goto :eof

    思路2.bat

    用一个变量PreviousLine保存含有“网络适配器”这个关键字所在行(不管是不是我们最终需要的网络适配器)的上一行内容,暂时不输出。一直等到找到了我们需要的网络适配器的时候,才把它(我们需要的连接名)和网络适配器一起输出。

    @echo offsetlocal enabledelayedexpansionfor /f "delims=" %%i in ('getmac /fo list /v') do (    set "ThisLine=%%i"    if "!ThisLine:网络适配器:=!" neq "!%%i!" (        set "PreviousLine=%%i"    ) else (        echo,%%i | findstr /v /c:"Bluetooth" /c:"Virtual" /c:"VPN" >nul 2>&1        if !errorlevel! equ 0 (            echo,!PreviousLine!            echo,%%i        )    ))pause

    请注意,本文中的代码主要是为了演示BAT脚本处理文本内容时常见的两个思路。如果单纯是为了获取到符合要求的网络连接名称和网络适配器名称,把getmac命令换成别的命令也许更加简单,此处不再详细展开。

    【如果觉得有用无法找到网络配适器的驱动程序,请点击"喜欢作者"】

    版权声明

    本文仅代表作者观点。
    本文系作者授权发表,未经许可,不得转载。

    发表评论