Friday, April 11, 2025

Windows系统自动检测WIFI断线重连脚本

     前提条件和适用场景适用于保持远程办公电脑时刻处于网络连线状态,以及家庭中通过WIFI组建文档共享网络的情况。由于Windows系统自带的自动连接范围内指定的WIFI功能比较垃圾,所以需要一点强有力的脚本强制连接WIFI。实现本脚本的前提条件是电脑本身已经连接过需要使用的WIFI信号,本脚本适用于Windows系统。
    具体实现和注意事项首先需要按Win+R键,并且输入cmd打开Windows命令提示符,之后可以使用如下指令

netsh WLAN show profiles

      来查看你至今为止连接过的WIFI配置文档,名称显示的是SSID

我的电脑连接过双频WIFI和手机热点

       通过以下指令查询当前连接的WIFI接口信息

netsh WLAN show interfaces


当前连接的家庭WIFI接口信息

       之前说过的首先需要连接一下未来需要使用到的WIFI,用户自行连接并输入密码,连接成功后,输入上述两条指令进行测试,列表中正常展示所需的WIFI信息即可。

       接下来介绍脚本,在桌面新建一个文本文档,然后将如下代码块复制进去

@echo off
rem @file:auto_connect_wifi.bat
rem @author:author
rem @date:2023.xx.xx
rem @note:for auto connect wifi

set wifi_name=999_5G
set log_file=D:\auto_connect\wifi.log
set try_cnt=1

if [%1] == [] (echo default_wifi>nul) || (
    set wifi_name=%1
)

echo [%date% %time%] Start connect wifi:%wifi_name% >> %log_file%

rem 主循环
:mainloop
    (netsh WLAN show interfaces | findStr %wifi_name% > nul &&(
        echo already connected.
    )) ||(
        set /a try_cnt+=1
        echo [%date% %time%] try to connect...[%try_cnt%]
        echo [%date% %time%] try to connect...[%try_cnt%] >> %log_file%
        netsh WLAN connect ssid=%wifi_name% name=%wifi_name% >> %log_file%
    )

    choice /t 5 /d y /n >nul
goto mainloop

       其中@echo off代表的是关闭命令行在cmd中的回显,更简洁一点。rem行代表的是注释信息,可以自行修改。wifi_name的右侧输入所需WIFI的名称即可,log_file是记录文档,记录下WIFI的重连信息,我选择在D盘新建一个auto_connect文档夹用来保存。主循环的任务就是时刻检查上文提到的展示接口语句来判断WIFI是否断开,断开的话,则记录到log_file中并且通过指令进行重连,未断开则无操作(只在后台运行,不记录到log_file中)。主循环中最后一句代码是间隔五秒的意思,指每隔5秒检查一次WIFI是否已经断开,并判断是否需要重连。

       保存完后关闭文本文档,并将文档命名为auto_connect_wifi.bat,之后双击运行即可。但是不可避免的是cmd窗口会一直显示在任务栏中,而且关闭cmd窗口之后脚本就失效了,所以我们需要把它放到后台,隐藏运行。

       依旧在桌面新建一个文本文档,将如下代码放入

Set ws = CreateObject("Wscript.Shell")
ws.run "cmd /c auto_connect_wifi.bat",vbhide

       保存后关闭文档,重命名为runbat.vbs,之后只需要双击这个runbat.vbs文档就可以啦!

       双击后视觉上什么也不会发生,这个时候可以先通过手动断开WIFI来进行测试,也可以先到任务管理器中查找进程,应该会找到一个如下图红框里的进程

代表将cmd窗口放到后台运行了

       电脑能自动重连WIFI就成功啦!你还可以查阅自己保存的log_file来查看你的电脑一天会断多少次WIFI,哈哈哈哈。

 https://www.bilibili.com/opus/791375680482836496?spm_id_from=333.1007.0.0

No comments: