写一个Windows脚本,用ping命令检测网络通断状态, 1,每3秒钟发送一个ping包,如果ping成功,则循环ping检测 2,如果ping超时,查询WIFI连接状态,如果网卡处于连接状态,则发送断开指令,间隔1秒重连;如果WIFI断连,则发送重连指令 3,循环以上动作 4,打印添加时间戳,并将日志保存到日志文件,限制日志文件大小为1M,数字递增命名日志文件
以下是一个Windows批处理脚本,用于实现你描述的功能。这个脚本会每3秒钟发送一个ping包,如果ping超时,则检查WIFI连接状态并进行相应的操作。日志文件会带有时间戳,并且限制大小为1M,超过1M时会创建新的日志文件。
@echo off
setlocal enabledelayedexpansion
:: 配置部分
set "pingAddress=8.8.8.8" :: 目标地址,可以修改为你需要的地址
set "logFileBase=network_log" :: 日志文件基础名称
set "logFileExt=.txt" :: 日志文件扩展名
set "maxLogSize=1048576" :: 最大日志文件大小(1M = 1048576字节)
set "wifiInterfaceName=Wi-Fi" :: WIFI接口名称,请根据实际情况修改
:: 初始化日志文件计数
set "logFileIndex=1"
set "logFile=%logFileBase%_%logFileIndex%%logFileExt%"
:check_log_size
:: 检查日志文件大小
if exist "%logFile%" (
for %%A in ("%logFile%") do (
set "logFileSize=%%~zA"
)
if !logFileSize! GEQ %maxLogSize% (
set /a logFileIndex+=1
set "logFile=%logFileBase%_%logFileIndex%%logFileExt%"
)
)
:ping_loop
:: 发送ping包
ping -n 1 %pingAddress% >nul
if errorlevel 1 (
:: ping超时,检查WIFI状态
netsh wlan show interfaces | findstr /i "State" | findstr /i "connected" >nul
if errorlevel 1 (
:: WIFI断连,尝试重连
echo [%date% %time%] WIFI disconnected, attempting to reconnect... >> %logFile%
netsh wlan connect name=%wifiInterfaceName%
) else (
:: WIFI连接但ping超时,断开并重连
echo [%date% %time%] WIFI connected but ping timeout, reconnecting... >> %logFile%
netsh wlan disconnect
timeout /t 1 >nul
netsh wlan connect name=%wifiInterfaceName%
)
) else (
:: ping成功
echo [%date% %time%] Network is up >> %logFile%
)
:: 等待3秒
timeout /t 3 >nul
:: 检查日志文件大小
goto check_log_size
:: 循环
goto ping_loop
network_check.bat
。该脚本会持续运行,直到手动终止。它会每3秒钟发送一个ping包,并根据ping结果和W