因为要解决一个内外网共用的问题,需要用到到指定网站连通性的测试,这个对一般专业IT从业人员来说也就是一个ping命令的事,但要让普通用户能直观获得反馈,就得写个小程序给他们,我考虑到便捷性与知识的熟悉性,决定用批处理,然后在网上就找到下面这个程序:
@echo off
ping 192.168.1.1&& goto :1 || goto :2
exit
:1
echo ******金安参保系统网连接成功,请打开参保系统。
pause
exit
:2
echo *****金安参保系统网连接失败,请检查外网或移动客户端是否正常开启。
pause
这段代码呢,看起来是没问题的,你要是在Windows XP下跑呢,他也能完成功能,但是,你要是在Windows 7平台上跑就会出问题,比如在我家的内网测试时,分别将指定地址指向我家的路由(192.168.1.1)和一个不存在的IP地址(192.168.1.11),他的反馈是下面这样的:
造成这个局面的原因是,XP如果检测不到对方在线,直接反馈的是Bad Request,而在Windows 7下面,无论对方在不在线,他都给你回复,只是回复内容不同而已,所以,这个批处理就抓瞎了,误报了。
然后,我又参考另一个网友的代码,自己写了一个:
::一个用来测试指定网址或IP是否通畅的小工具,不通则循环测试。
::Write By 上博科技 QQ20031722
::www.bitpacket.cn blog.csdn.net/laguoqing
::2019-03-14
::测试连通性
:start
@mode con cols=60 lines=15
@echo off
ping -n 2 192.168.1.1|findstr "TTL="&&goto reach||goto unreach
:reach
color 0a
echo.
echo.
@echo.**********************************************************
@echo.* *
@echo.* *
@echo.* 经测试,专网通畅,祝您工作顺利! *
@echo.* *
@echo * 上博科技承制集成!QQ:20031722 *
@echo.* *
@echo.**********************************************************
mshta vbscript:createobject("sapi.spvoice").speak("经测试,专网通畅,祝您工作顺利!")(window.close)
@ping -n 10 127.0.0.1>nul
goto exit
:unreach
color 0F
echo.
echo.
@echo.**********************************************************
@echo.* *
@echo.* *
@echo.* 经测试,专网目前尚不联通,请检查硬件与配置! *
@echo.* *
@echo * 上博科技承制集成!QQ:20031722 *
@echo.* *
@echo.**********************************************************
mshta vbscript:createobject("sapi.spvoice").speak("经测试,专网目前尚不联通,请检查硬件与配置")(window.close)
@ping -n 10 127.0.0.1>nul
goto start
::goto exit
:exit
exit
分别在Windows XP和Windows 7试跑,他都准确无误的获得了正确的结果,兼容性是刚刚的,上个图:
、
最奇妙的是,他还能通过音箱发声,写这么多年批处理,才发现还能这么干,学无止境呀!