解决 Windows 10 WiFi 重连失败的问题
计划一个任务来运行此脚本,该脚本会检查 Windows 在启动、睡眠或休眠后是否已重新连接到指定的路由器,如果未连接则尝试连接。
引言
许多升级到 Windows 10 的 Windows 用户发现,他们在启动、睡眠或休眠后,Windows 无法自动重新连接到其 WiFi 路由器。网上有很多可能的解决方案,从运行 chkdsk
、确保家庭网络设置为“专用
”到更新网络驱动程序、在设备管理器中禁用网络适配器的电源管理,再到关闭“电源选项”中的“快速启动”,其中一个或多个解决方案可能对您有效,因此请先尝试它们。
但是,许多人尝试了所有这些方法却徒劳无功,之后我看到的唯一建议就是彻底重装 Windows,在我看来,这就像因为前门卡住而重建你的房子!所以我决定走一条不同的道路,编写一个批处理脚本来检查家庭 WiFi 路由器是否已连接,如果没有则尝试连接。然后我计划了一个任务,在启动或恢复时运行该脚本。
我希望这篇文章能帮助到其他遇到此问题的人。
要求
运行脚本和计划一个任务需要 Windows 管理员帐户,无论是否有用户登录。如果您没有管理员帐户,您需要与网络管理员联系。
Using the Code
将此代码粘贴到批处理文件中(扩展名为 .bat),并将“HOME-ROUTER
”编辑为您自己的路由器 SSID
。
@ECHO OFF
REM Make up to three attempts to connect to the router
SETLOCAL EnableDelayedExpansion
set LOGFILE=output.txt
call :CHECK >> %LOGFILE%
exit /b
:Check
ECHO ---------------------------------------------
ECHO Start check at %date% %time%
set "myRouter=HOME-ROUTER"
set "host=8.8.8.8"
set counter=1
:WHILE
if !counter! EQU 4 goto :failpoint
ping -n 1 "!host!" | findstr /r /c:"[0-9] *ms"
if !errorlevel! EQU 0 (
if !counter! EQU 1 (
REM It's the first pass, so the WiFi is already connected
ECHO Already connected
) else (
REM It's a subsequent pass, so this script made the connection
ECHO Connected OK
)
goto :exitpoint
) else (
ECHO Not connected
ECHO Connection attempt !counter!
netsh wlan connect !myRouter!
timeout 5
set /a counter+=1
goto :WHILE
)
:failpoint
ECHO Failed three connection attempts
:exitpoint
将文件保存在计算机的某个位置,并通过直接断开 WiFi 并运行批处理文件来测试它,看看它是否能正常重新连接 WiFi。一旦确定它有效,您就可以创建计划任务,在适当的时间运行它。
注释
我使用了 Google 的一个 DNS IP 地址 (8.8.8.8) 作为可靠的主机进行检查,但您也可以使用任何本地设备(例如无线打印机 - 例如 192.168.1.29 或“HP_LaserJetPro”)的 IP 地址或共享名称(如果您知道它将始终可用)。如果您的互联网连接不可靠或按需连接,这可能是更好的选择。
我绝不是 Windows 命令行和/或批处理文件编码方面的专家。我只是在网上找到了一些代码片段后,经过反复琢磨和抓耳挠腮才将这段代码组合在一起。所以它可能不是完成此任务最有效、最健壮或最有效的方法。我一直乐于接受建设性的批评和改进建议。
计划任务
- 启动任务计划程序(按 Windows 键 + R 打开运行框,输入 taskschd.msc 并按 Enter)。
- 在“操作”窗格中,单击“创建任务…”。
- 为任务命名。
提示:在任务名称前加上下划线,以便它们出现在列表的顶部。 - 在“安全选项”下,选择“无论用户是否登录都要运行”。
注意:如果您当前没有以管理员帐户登录 Windows,则需要通过单击“更改用户或组…”按钮将用户更改为管理员帐户。 - 选中“使用最高权限运行”复选框。
- 转到“触发器”选项卡,并添加两个“新建…”触发器。
- 系统启动时
- 从顶部的下拉列表中选择“在启动时”。
- 选中“延迟任务”复选框,并将其设置为“30 秒”。
这有助于确保 Windows 已启动网络连接所需的相应服务。 - 点击**确定**。
- 从睡眠或休眠恢复时
- 从顶部的下拉列表中选择“按事件”。
- 从“日志”下拉列表中选择“系统”。
- 从“源”下拉列表中选择“Kernel-Power”。
- 在“事件 ID”框中输入“107”。
- 选中“延迟任务”复选框,并将其设置为“30 秒”。
这里的延迟可能不是必需的,但它不会造成任何损害。 - 点击**确定**。
- 系统启动时
- 转到“操作”选项卡,并添加此“新建…”操作。
- 从“操作”下拉列表中选择“启动程序”。
- 在“程序/脚本”框中输入完整路径和脚本名称,或使用“浏览…”按钮找到它。
- 在“起始于(可选):”框中,输入希望创建 output.txt 日志文件的路径,即使它与批处理文件在同一路径。否则,它根本不会被创建。
或者,您可以编辑批处理文件本身中的 LOGFILE 常量,为其提供完整路径。 - 点击**确定**。
- 转到“条件”选项卡,并取消选中“仅当计算机使用交流电源运行时才启动任务”选项。
- 点击**确定**。
- 出现提示时,请输入所选管理员帐户的密码。
应该就完成了。测试所有重启场景,并确保每次都更新了“output.txt”日志文件。
历史
- v1.0