当前位置:首页|资讯|ChatGPT|编程

双网卡一键切换bat小程序

作者:你好我请客发布时间:2023-05-15

由于单位的性质特殊,需要在双网卡间切换

总是去网络控制面板里禁用太麻烦,于是在网上找了半天

又chatgpt了几下,又找同事研究了一下。

搞了两个简单的小程序。直接贴文字上来吧

如果直接传程序上来,由于win7 win10默认编码不同,会出乱码

只需要把代码部分全保存在txt文本里,再把后缀改了bat就行

1号程序,手动选择禁用启用哪个网卡,代码第二行chcp 65001没有的话,win10会乱码,win7这行不需要。


@echo off

chcp 65001

setlocal enabledelayedexpansion

rem 获取网卡信息

set mac_list=

for /f "tokens=1-3 delims=," %%a in ('Getmac /v /nh /fo csv') do (

    if not defined wk1 (

        set wk1="%%a"

        set wn1="%%b"

        set wz1="%%c"

    ) else (

        set wk2="%%a"

        set wn2="%%b"

        set wz2="%%c"

        goto  :endloop

    )

)

:endloop


rem 输出网卡信息

echo.

echo ------------网卡1信息信息如下:--------------

echo ------------网卡1名称:%wk1%

echo ------------网卡1型号:%wn1% %wz1%

echo.

if defined wk2 (

    echo ------------网卡2信息如下:--------------

    echo ------------网卡2名称:%wk2%

    echo ------------网卡2型号:%wn2% %wz2%

    echo.

)

:MENU

echo.

echo ------------右键以管理员身份运行--------------

echo.

echo.         1 启用网卡1同时禁用网卡2

echo.

echo.         2 禁用网卡1同时启用网卡2

echo.

echo.         3 禁用全部网卡

echo.

echo.         4 启用全部网卡

echo.

echo.         5 退 出

echo.

echo. ============ B站你好我请客 瞎编的 =============

echo.

set /p ID=请输入选择项目的序号:

if "%id%"=="1" goto cmd1

if "%id%"=="2" goto cmd2

if "%id%"=="3" goto cmd3

If "%id%"=="4" goto cmd4

If "%id%"=="5" exit

PAUSE

:cmd1

echo 启用网卡"%wk1%"禁用网卡"%wk2%"

netsh interface set interface "%wk1%" enabled

netsh interface set interface "%wk2%" disabled

goto MENU

:cmd2

echo 禁用网卡"%wk1%"启用网卡"%wk2%"

netsh interface set interface "%wk1%" disabled

netsh interface set interface "%wk2%" enabled

goto MENU

:cmd3

echo 禁用网卡"%wk1%"禁用网卡"%wk2%"

netsh interface set interface "%wk1%" disabled

netsh interface set interface "%wk2%" disabled

goto MENU

:cmd4

echo 启用网卡"%wk1%"启用网卡"%wk2%"

netsh interface set interface "%wk1%" enabled

netsh interface set interface "%wk2%" enabled

goto MENU


程序1就完成了,原理上是可以N网卡切换,用不上,就不写那么多了。主要是这代码也比较冗余,但是让gpt给改的话,改完看着很精简,但是不能用。高手拿去继续改把



程序2号,一键切换网卡2的状态。因为单位的双网卡,是一个有线网卡一个无线网卡。

这样的话,只要启用有线网卡,windows默认有线网卡优先级高,就优先连有线网卡。


@echo off

chcp 65001


setlocal enabledelayedexpansion


rem 获取网卡信息

set mac_list=

for /f "tokens=1-3 delims=," %%a in ('Getmac /v /nh /fo csv') do (

    if not defined wk1 (

       set wk1="%%a"

       set wn1="%%b"

       set wz1=%%c

         

    ) else (

        set wk2="%%a"

        set wn2="%%b"

        set wz2=%%c

        goto  :endloop

    )

)

:endloop

echo %wk2%

echo %wn2%

echo %wz2%

echo. ============ B站你好我请客 瞎编的 =============

IF %wz2%=="Disabled" (

  netsh interface set interface "%wk2%" enabled

) ELSE (

  netsh interface set interface "%wk2%" disabled

)


echo  网卡2已经切换

PAUSE


这个程序默认禁用2网卡,如果你需要禁用1网卡,

只需要把endloop关键字往后所有的2都改成1.



Copyright © 2024 aigcdaily.cn  北京智识时代科技有限公司  版权所有  京ICP备2023006237号-1