您的位置:首页 > 理论基础 > 计算机网络

Windows网络故障排查脚本

2015-07-12 22:27 746 查看
总是有朋友家里网络出问题请帮忙修理,这是个麻烦事,没有网络不能远程控制排除问题,电话描述又总是跟小白朋友说不清楚,因此就简单写了个故障排除脚本,让他们双击运行就好。做软件的总是沦落到修电脑的境地啊...

有些地方还需要完善,只在Win7上试过,有更懂行的朋友帮忙完善下吧!(保存成bat脚本,双击运行)

@echo off
setlocal enabledelayedexpansion
cls

echo "-----------------------------------------------------------" > NetworkStatus.txt
echo "------------           网络故障检测程序          ----------" >> NetworkStatus.txt
echo "-----------------------------------------------------------" >> NetworkStatus.txt
echo. >> NetworkStatus.txt

:: 检测TCP/IP协议驱动运行情况
:CHECKTCPPROT
echo "Check TCP/IP Protocol ..."
for /F "tokens=1,2* delims=(%%" %%i in ('ping -n 5 127.0.0.1 ^| find /i "Packets:"') do (
set LOSSPACKE=%%j
if !LOSSPACKE!==0 (
echo "正确 : 网卡驱动、TCP/IP协议安装正常 ... " >> NetworkStatus.txt
) else (
if !LOSSPACKE!==100 (
echo "错误 : 网卡驱动、TCP/IP协议错误!可能需要重装网卡驱动或操作系统 ... " >> NetworkStatus.txt
NetworkStatus.txt
goto :EOF
) else (
echo "警告 : 网卡驱动、TCP/IP协议可能存在问题,存在丢包情况(!LOSSPACKE!% loss) ... " >> NetworkStatus.txt
)
)
)
echo. >> NetworkStatus.txt

:: 检测网卡安装及网络参数配置情况
:CHECKNETWORKCFG
echo "Check Net work config settings ..."
for /F "tokens=1,2* delims=:" %%i in ('ipconfig ^| find /i "IP Address"') do (
set LOCALIP=%%j
echo "------------- IP 地址 (winXP): !LOCALIP!" >> NetworkStatus.txt
)
for /F "tokens=1,2* delims=:" %%i in ('ipconfig ^| find /i "IPv4 Address"') do (
set LOCALIP=%%j
echo "------------- IPv4 地址 (win7):!LOCALIP!" >> NetworkStatus.txt
)
for /F "tokens=1,2* delims=:" %%i in ('ipconfig ^| find /i "Default Gateway"') do (
set GATEWAY=%%j
echo "------------- 默认网关地址 : !GATEWAY!" >> NetworkStatus.txt
)
for /F "tokens=1,2* delims=:" %%i in ('ipconfig ^| find /i "DNS Server"') do (
set DNSSERVER=%%j
echo "------------- DNS 服务器地址 : !DNSSERVER!" >> NetworkStatus.txt
)
if "LOCALIP"=="" (
echo "错误 : 网卡故障或者IP配置错误,请尝试设置(TCP/IPv4)为“自动分配IP地址” “自动分配DNS服务器” ... " >> NetworkStatus.txt
control.exe ncpa.cpl
NetworkStatus.txt
goto :CHECKNETWORKCFG
) else (
if "GATEWAY"=="" (
echo "错误 : 网卡故障或者默认网关配置错误,请尝试设置(TCP/IPv4)为“自动分配IP地址” “自动分配DNS服务器” ... " >> NetworkStatus.txt
control.exe ncpa.cpl
NetworkStatus.txt
goto :CHECKNETWORKCFG
) else (
for /F "tokens=1,2,3* delims=." %%i in ("%LOCALIP%") do (
set IPADDERSEC1=%%i
set IPADDERSEC2=%%j
set IPADDERSEC3=%%k
)
for /F "tokens=1,2,3* delims=." %%i in ("%GATEWAY%") do (
set GETWADDERSEC1=%%i
set GETWADDERSEC2=%%j
set GETWADDERSEC3=%%k
)
if !IPADDERSEC1!==!GETWADDERSEC1! (
if !IPADDERSEC2!==!GETWADDERSEC2!  (
if !IPADDERSEC3!==!GETWADDERSEC3! (
set NETCONFIGERROR=0
) else (
set NETCONFIGERROR=1
)
) else (
set NETCONFIGERROR=1
)
) else (
set NETCONFIGERROR=1
)
if !NETCONFIGERROR!==1 (
echo "错误 : IP地址配置错误或者默认网关配置错误,请尝试设置(TCP/IPv4)为“自动分配IP地址” “自动分配DNS服务器” ... " >> NetworkStatus.txt
control.exe ncpa.cpl
NetworkStatus.txt
goto :CHECKNETWORKCFG
) else (
echo "正确 : 网卡正常,网络参数配置正常 ... " >> NetworkStatus.txt
)
)
)
echo. >> NetworkStatus.txt

:: 检测本地连接是否正常
:CHECKLANLINE
echo "Check Local area connection status..."
for /F "tokens=1,2* delims=(%%" %%i in ('ping -n 5 %GATEWAY% ^| find /i "Packets:"') do (
set LOSSPACKE=%%j
if !LOSSPACKE!==0 (
echo "正确 : 本地路由连接正常 ... " >> NetworkStatus.txt
) else (
if !LOSSPACKE!==100 (
echo "错误 : 无法连接路由器,如使用有线连接,请检查网线是否连接,电脑网络接口绿灯是否闪烁;">> NetworkStatus.txt
echo "		 如使用无线连接,请检查无线路由是否开启,无线信号灯是否闪烁。 " >> NetworkStatus.txt
echo "		 可尝试拔掉路由器电源以重新启动,看是否可以正常工作。 " >> NetworkStatus.txt
NetworkStatus.txt
goto :EOF
) else (
echo "警告 : 网线端口接触不良,或者无线信号强度不够,存在丢包情况(!LOSSPACKE!% loss) ... " >> NetworkStatus.txt
echo "		 如使用有线连接,可尝试重新插拔网线两端端口,或更换网线或接头。 " >> NetworkStatus.txt
echo "		 如使用无线连接,可尝试重启无线路由或电脑,并保持二者距离更近。 " >> NetworkStatus.txt
)
)
)
echo. >> NetworkStatus.txt

:: 检测互联网连接状态
:CHECKINTERNETCONNECTION
echo "Check Internet connection status ..."
for /F "tokens=1,2* delims=(%%" %%i in ('ping -n 5 www.baidu.com ^| find /i "Packets:"') do (
set LOSSPACKE=%%j
if !LOSSPACKE!==0 (
echo "正确 : 外部网络连接正常,如无法上网,请尝试重启电脑,或重装应用程序或浏览器 ... " >> NetworkStatus.txt
) else (
echo "警告 : 我需要以下信息分析网络连接出现问题环节 ..."  >> NetworkStatus.txt
echo "---------------------------------------------------------------------"  >> NetworkStatus.txt
tracert www.baidu.com >> NetworkStatus.txt
echo "---------------------------------------------------------------------"  >> NetworkStatus.txt
)
)
echo. >> NetworkStatus.txt

NetworkStatus.txt
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  网络 故障 windows 脚本