写了个脚本,测试的时候很正常,但是真正断网的时候就G了,不知道哪里的原因,网卡名字也对上的
有大佬能帮忙看看吗,或者有没有自动识别当前联网的网卡进行检测的,电脑上还有vmwave的虚拟网卡,不知道能不能实现
主要就是持续检测网络,断网超过多少秒就重启网卡,重启几次无效的话就重启电脑- @echo off
-
- REM 获取当前日期
- for /f "tokens=1-3 delims=/ " %%a in ('date /t') do (
- set "datestamp=%%a-%%b-%%c"
- )
-
- REM 创建日志文件名
- set "alllogfile=D:\Ping\%datestamp%_network_check.log"
- set "rebootlogfile=D:\Ping\%datestamp%_reboot.log"
-
- REM 设置需要重启的网卡名称
- set INTERFACE_NAME=以太网
-
- REM 最大重启次数,默认重启3次网卡无效后重启电脑,根据自己需要更改下列数字,比重启次数大1即可
- set MAX_RESTART_COUNT=4
-
- REM 网络中断秒数
- set RESTART_INTERVAL=30
-
- REM 记录已经进行的网卡重启次数。初始值为1,每次网卡重启后递增。
- set /A RESTART_COUNT=1
- set /A DISCONNECTED_TIME=0
- set "STOP_FLAG="
-
- :START
- ping www.baidu.com -n 1 | findstr "TTL=" > nul
-
- if %errorlevel% neq 0 (
- set /A DISCONNECTED_TIME+=1
- if %DISCONNECTED_TIME% gtr %RESTART_INTERVAL% (
- set /A RESTART_COUNT+=1
- netsh interface set interface "%INTERFACE_NAME%" admin=disable > nul
- timeout /t 5 > nul
- netsh interface set interface "%INTERFACE_NAME%" admin=enable > nul
- set DISCONNECTED_TIME=0
-
- if %RESTART_COUNT% equ %MAX_RESTART_COUNT% (
- echo %date% %time% - 网卡重启无效, 重启电脑. >> "%alllogfile%"
- echo %date% %time% - 网卡重启无效, 重启电脑. >> "%rebootlogfile%"
- shutdown /r /f /t 0
- set "STOP_FLAG=1" REM 设置停止标志
- exit
- ) else (
- echo %date% %time% - %INTERFACE_NAME%网卡重启次数: 第 %RESTART_COUNT% 次 >> "%alllogfile%"
- echo %date% %time% - %INTERFACE_NAME%网卡重启次数: 第 %RESTART_COUNT% 次 >> "%rebootlogfile%"
- )
- )
- echo %date% %time% - 网络中断! >> "%alllogfile%"
- ) else (
- set DISCONNECTED_TIME=0
- )
-
- timeout /t 1 > nul
-
- REM 检查停止标志
- if defined STOP_FLAG (
- exit
- ) else (
- goto :START
- )
复制代码
|