因爲要解決一個內外網共用的問題,需要用到到指定網站連通性的測試,這個對一般專業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試跑,他都準確無誤的獲得了正確的結果,兼容性是剛剛的,上個圖:
、
最奇妙的是,他還能通過音箱發聲,寫這麼多年批處理,才發現還能這麼幹,學無止境呀!