未检测到互联网时自动连接到 wifi 网络

Automatically connect to wifi network when no internet detected

编辑:找到了不使用任务计划程序的修复程序。

@echo off
:loop
set addresses=192.168.1.1
for %%a in (%addresses%) do ping %%a -n 1 > nul || netsh wlan add profile filename=C:\User\path\to\wireless\xml\profile.xml user=all
timeout /t 5
goto :loop

每 5 秒重复一次


我已经走到一半了,但卡住了。我已经有一个批处理文件,可以在手动 运行 时将笔记本电脑连接回网络,但希望在未检测到互联网时 运行 。所以我继续将它绑定到 Task Scheduler,触发器是 "Microsoft-Windows-NetworkProfile/Operational",ID 为 10001(这是 Disconnect ID),但没有成功。

我相信它只会在手动断开与互联网的连接时触发,而不是在无线网卡自行断开信号时触发。关于我能做什么有什么想法吗?

OS: Windows 8.1

无线接口:电缆问题 AC600 双频无线加密狗(不允许自动连接到 SSID,并且由于未知原因不断断开连接)

定期执行 ping 并检查结果的批处理脚本怎么样?

ping some.host > pinged.txt
find "some string which occurs if the network went down" pinged.txt

如果 %errorlevel% 为 0,则表示已找到字符串且连接已断开。

找到解决方案!

@echo off
:loop
set addresses=192.168.1.1
for %%a in (%addresses%) do ping %%a -n 1 > nul || netsh wlan add profile filename=C:\User\path\to\wireless\xml\profile.xml user=all
timeout /t 5
goto :loop

它的作用是对一个地址执行一次 ping 操作(在本例中是一个内部地址,这样我就不会收到来自站点的 DDoS 威胁),如果它返回一个错误,它将加载一个 wifi 配置文件。 要首先获取个人资料,您需要输入

netsh wlan show profiles

查看您拥有的配置文件(它只加载当前使用的无线网卡的配置文件)。在看到配置文件的名称后,您可以通过键入

下载配置文件
netsh wlan export profile name=[profile name]

我相信它会保存到桌面,您可以从那里更改此评论顶部列出的代码以匹配 xml 文件的文件路径以满足您的需要。

干杯!