标题: [网络连接] 有没有佬能帮忙看看这个断网检测的BAT脚本? [打印本页]
作者: 如你是我 时间: 2024-1-29 10:04 标题: 有没有佬能帮忙看看这个断网检测的BAT脚本?
写了个脚本,测试的时候很正常,但是真正断网的时候就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
- )
复制代码
作者: czjt1234 时间: 2024-1-29 12:08
断网时的日志呢?一起发上来撒
如果看不出哪里的问题,再多加几行日志
比如33行和34行之间再加行
echo 禁用网卡 %errorlevel% >> "%alllogfile%"
作者: 如你是我 时间: 2024-1-29 13:20
回复 2# czjt1234
周五测试 生成的2024-01-26_network_check.log
然后周六休息 但是下午断网了,也没有生成27好的日志,直接写进26号的日志了
2024/01/27 周六 16:59:50.29 - 网络中断!
2024/01/27 周六 16:59:51.20 - 网络中断!
2024/01/27 周六 16:59:52.21 - 网络中断!
2024/01/27 周六 16:59:53.12 - 网络中断!
2024/01/27 周六 16:59:54.14 - 网络中断!
2024/01/27 周六 16:59:55.14 - 网络中断!
今天来上班发现电脑是关机状态,周末公司也没人来上班,是笔记本
作者: buyiyang 时间: 2024-1-29 15:02
本帖最后由 buyiyang 于 2024-1-29 15:12 编辑
明显的问题就是复合语句中没有用延迟变量,导致多个if判断和变量输出错误。
具体上,if %DISCONNECTED_TIME% gtr %RESTART_INTERVAL%判断一直为false,则只会执行后面的语句echo %date% %time% - 网络中断! >> "%alllogfile%"。
作者: 如你是我 时间: 2024-1-29 20:43
回复 4# buyiyang
timeout /t 5 > nul
这个不是吗 - - gpt写的
作者: 77七 时间: 2024-1-29 23:54
- @echo off
- setlocal enabledelayedexpansion
- REM 设置需要重启的网卡名称
- set INTERFACE_NAME=以太网
-
- REM 最大重启次数,默认重启3次网卡无效后重启电脑,根据自己需要更改下列数字,比重启次数大1即可
- set MAX_RESTART_COUNT=3
-
- REM 网络中断秒数
- set RESTART_INTERVAL=30
-
- REM 记录已经进行的网卡重启次数。初始值为0,每次网卡重启后递增。
- set /A RESTART_COUNT=0
- set /A DISCONNECTED_TIME=0
-
- :START
- ping www.baidu.com -n 1 | findstr "TTL=" > nul
-
- if %errorlevel% neq 0 (
- set /A DISCONNECTED_TIME+=1
- for /f %%i in ('powershell -c "Get-Date -uformat '%%Y%%m%%d'"') do (
- md "D:\Ping\" 2>nul
- set "alllogfile=D:\Ping\%%i_network_check.log"
- set "rebootlogfile=D:\Ping\%%i_reboot.log"
- )
- echo !date! !time! - 网络中断! >> "!alllogfile!"
-
- 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
- timeout /t 5 > nul
- echo !date! !time! - %INTERFACE_NAME%网卡重启次数: 第 !RESTART_COUNT! 次 >> "!alllogfile!"
- echo !date! !time! - %INTERFACE_NAME%网卡重启次数: 第 !RESTART_COUNT! 次 >> "!rebootlogfile!"
-
- ping www.baidu.com -n 1 | findstr "TTL=" > nul
- if !errorlevel! neq 0 (
- set /a RESTART_COUNT+=1
- if !RESTART_COUNT! equ %MAX_RESTART_COUNT% (
- echo !date! !time! - 网卡重启无效, 重启电脑. >> "!alllogfile!"
- echo !date! !time! - 网卡重启无效, 重启电脑. >> "!rebootlogfile!"
- shutdown /r /f /t 30
- exit
- )
- ) else (
- set /a DISCONNECTED_TIME=0,RESTART_COUNT=0
- )
- )
- ) else (
- set DISCONNECTED_TIME=0
- )
-
- timeout /t 1 > nul
- goto :START
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |