写此批处理的原因:
很多做维护的朋友可能都会遇到这样的问题,某个微机网络不通(有时仅仅因为把本地连接禁用了),由于距离较远,通常先在电话中询问故障现象。可使用者对计算机不太熟悉,常常一问三不知。
为了便于维护,快速找出故障原因,只好写一个ping命令的批处理,依次对本机、网关、更远的IP地址进行测试。
要求如下:
1、windows 2K/XP系统环境;
2、由近及远ping多个地址;
3、不显示ping的过程,自动判断ping返回的结果。如下四种:
a、Reply from xxx.xxx.xxx.xxx: byte=32 time<2ms TTL=128
b、Request time out.
c、Hardware error
d、Destination host unreachable
4、中文彩色字符依次显示每次ping的结果,并对异常状态进行提醒。
5、方便修改ip及相关信息(每个机器上bat文件中IP不同,非同一局域网)
由于本人是新手,不会编程,下面的代码是花了几天拼凑的。
感觉写的比较乱,而且有bug(再次运行就不显示ping的结果报告,见图)
请各位朋友帮忙修改,不胜感激!!!
所参考的帖子 作者:electronixtar《超越color命令 - CMD里显示彩色文字》
@echo off
rem--------------------------加载驱动文件----------------------------
color 0b
chcp 437>nul&&graftabl 936>nul
if not exist CONFIG.NT copy %WinDir%\System32\CONFIG.NT CONFIG.NT
@cls
echo DEVICE=%WinDir%\System32\ANSI.SYS /x >%WinDir%\System32\CONFIG.NT
command /cecho
::--------------------------------------------------------------------
::----------------------------设置结果报告----------------------------
set s=连接正常
set t=注意!!!
set u=连接中断
set v=目的主机不能到达:1.本地连接是否禁用 2.网线是否接好 3.路由是否连接
set w=硬件错误:1.检查网线是否接好 2.本地连接是否禁用
::----------------------------开始ping本机----------------------------
@echo.
set a=本机网卡
set b=192.168.1.19
set c=本地路由
set d=192.68.1.1
@echo 正在检测%a%...
@echo ----------------------------------------------------------------------------
for /l %%i in ('ping %b%') do (
ping -n 1 %b%|find "TTL=" > nul && command /cecho [1;36m %a% 测试 [32m正常
ping -n 1 %b%|find "Request" > nul && command /cecho [1;33m%t% [36m %a% [31m异常
ping -n 1 %b%|find "Destination" > nul && command /cecho [1;33m%t% [31m%v%
ping -n 1 %b%|find "hardware" > nul && command /cecho [1;33m%t% [31m%w%
)
@echo ============================================================================
@echo.
::--------------------------------ping1-------------------------------
@echo 正在ping%c%...
@echo ----------------------------------------------------------------------------
for /l %%i in ('ping %d%') do (
ping -n 1 %d%|find "TTL=" > nul && command /cecho [1;36m %c% [32m%s%
ping -n 1 %d%|find "Request" > nul && command /cecho [1;33m %t% [36m %c% [31m%u%
ping -n 1 %d%|find "Destination" > nul && command /cecho [1;33m%t% [31m%v%
)
@echo ============================================================================
@echo.
@echo 测试结束 按任意键退出
pause>nul
copy CONFIG.NT %WinDir%\System32\CONFIG.NT 1>nul 2>nul
copy CONFIG.NT %WinDir%\System32\CONFIG.NT 1>nul 2>nul
del CONFIG.NT
正常的结果

再次运行就这样了 不知道什么原因

[
Last edited by amato on 2010-7-28 at 23:18 ]