作为《自动Ping脚本的编写要点》一文 的补充,这里给出了一个完整的实例,用来演示各种技术的集成。
@ECHO ***************************************************************************
@ECHO *** ***
@ECHO *** 脚本名称: ***
@ECHO *** 一键式广域网连通性测试程序 ***
@ECHO *** ***
@ECHO *** 脚本功能: ***
@ECHO *** 自动打开多个命名窗口,并对网络进行连通性测试和性能测试 ***
@ECHO *** ***
@ECHO *** 当前版本: ***
@ECHO *** PingAll version 0.9b ***
@ECHO *** ***
@ECHO *** 作者: ***
@ECHO *** svnLight ***
@ECHO *** ***
@ECHO *** 创建日期:2009年09月12日 ***
@ECHO *** 初始版本0.9 ***
@ECHO *** ***
@ECHO *** 版本更新纪录 ***
@ECHO *** 2009-09-14 0.9a ***
@ECHO *** 2009-09-16 0.9b ***
@ECHO *** ***
@ECHO *** 0.9版本功能列表 ***
@ECHO *** 1. 自动识别网卡IP地址,支持多网卡 ***
@ECHO *** 2. 支持两种测试模式 ***
@ECHO *** (1) PingAll ***
@ECHO *** 相当于进行[ping ip -t]测试 ***
@ECHO *** (2) PingAll times ***
@ECHO *** 相当于进行[ping ip -n times]测试 ***
@ECHO *** 两种测试模式下,按Ctrl+C后停留在各自的命令行窗口中 ***
@ECHO *** 3. 区分FirstPath和SecondPath,仅对可达路由进行测试 ***
@ECHO *** 4. 自动识别所处站点,仅对外部站点进行测试 ***
@ECHO *** 5. 窗口标题栏提示目标地址 ***
@ECHO *** 0.9a版本功能改进 ***
@ECHO *** 1. 新建控制台窗口使用定制后的控制台默认属性,缓冲命令行数等 ***
@ECHO *** 2. 提示开始测试时间 ***
@ECHO *** ***
@ECHO *** 0.9b版本功能改进 ***
@ECHO *** 1. 横向平铺所有桌面窗口和设定前景色 ***
@ECHO *** 2. 用字符颜色区分到不同站点的ping包结果 ***
@ECHO *** ***
@ECHO *** 网络经验 ***
@ECHO *** 1. Ping交换机VLAN地址比Ping机器慢,而且延时抖动大很多 ***
@ECHO *** Ping机器 抖动范围 ^< 3ms ***
@ECHO *** Ping交换机VLAN地址 抖动范围 一般10ms以上,最大可达400-500ms ***
@ECHO *** ***
@ECHO ***************************************************************************
::
:: *********************************************************************************
:: 主程序
:: MainProcess <<<
::
@ECHO OFF && setlocal
@COLOR 03
@set TEMPFILE=temp.txt
@set TEMPWSHF=temp.vbs
::@SET FONTCOLOR=a
@set PINGOPTIONS=-t
@if not "%1" == "" set PINGOPTIONS=-n %1
::获取本机的IP地址
@if exist %TEMPFILE% del %TEMPFILE%
@ipconfig | find "IP Address" > %TEMPFILE%
:: 判断是否生成了有效的%TEMPFILE%文件
@CALL :SubGetFileSize %TEMPFILE%
@if %FileSize% LEQ 10 (
@ECHO 网线没有连接或者交换机没有开机,不能进行测试。
@goto ExitPing
)
::获取本机的IP地址
::@for /F "skip=7 tokens=15,*" %%I in (%TEMPFILE%) do (
@for /F "tokens=15,*" %%I in (%TEMPFILE%) do (
@set LocalAddr=%%I
@goto :GetAddrRouterFlag
)
::@ECHO LocalAddr=%LocalAddr%
::识别路由 - MainPath or SecondPath
:GetAddrRouterFlag
@for /F "delims=. tokens=1" %%I in ("%LocalAddr%") do (
@set /A AddrHead=%%I
@set /A AddrRouterFlag=%%I/64
@goto :StartTest
)
:StartTest
@if %AddrRouterFlag% EQU 0 goto :Start1stTest
@if %AddrRouterFlag% EQU 1 goto :StartSndTest
@if %AddrRouterFlag% EQU 2 goto :StartSndTest
@if %AddrRouterFlag% EQU 3 goto :StartSndTest
@if %AddrRouterFlag% EQU 4 goto :StartSndTest
@goto :ExitPing
:Start1stTest
@ECHO 启动到所有站点的MainPath网络连通性测试...
:DFZX_1.x.x.x_
@SET FONTCOLOR=a
@if %AddrHead% EQU 1 GOTO :ZKZX_11.x.x.x_
@start cmd.exe /K "title [MainPath-到DFZX-CSW广域网接口-1.32.0.20]&& color 0%FONTCOLOR% && echo 开始测试时间%TIME% && ping 1.32.0.20 %PINGOPTIONS%"
::@start cmd.exe /K "title [MainPath-到DFZX-ASW的VLAN10上连网关-1.33.11.1]&& color 0%FONTCOLOR% && echo 开始测试时间%TIME% && ping 1.33.11.1 %PINGOPTIONS%"
@start cmd.exe /K "title [MainPath-到DFZX-ASW上的PC-1.33.11.166]&& color 0%FONTCOLOR% && echo 开始测试时间%TIME% && ping 1.33.11.166 %PINGOPTIONS%"
:ZKZX_11.x.x.x_
@SET FONTCOLOR=a
@if %AddrHead% EQU 11 GOTO :RWFXZX_13.x.x.x_
@if %AddrHead% GTR 11 SET FONTCOLOR=b
@start cmd.exe /K "title [MainPath-到ZKZX-CSW广域网接口-11.32.0.20]&& color 0%FONTCOLOR% && echo 开始测试时间%TIME% && ping 11.32.0.20 %PINGOPTIONS%"
::@start cmd.exe /K "title [MainPath-到ZKZX-ASW1的VLAN10上连网关-11.33.19.1]&& color 0%FONTCOLOR% && echo 开始测试时间%TIME% && ping 11.33.19.1 %PINGOPTIONS%"
::@start cmd.exe /K "title [MainPath-到ZKZX-ASW2的VLAN10上连网关-11.33.11.1]&& color 0%FONTCOLOR% && echo 开始测试时间%TIME% && ping 11.33.11.1 %PINGOPTIONS%"
::@start cmd.exe /K "title [MainPath-到ZKZX-ASW3的VLAN10上连网关-11.34.11.1]&& color 0%FONTCOLOR% && echo 开始测试时间%TIME% && ping 11.34.11.1 %PINGOPTIONS%"
:RWFXZX_13.x.x.x_
@SET FONTCOLOR=b
@if %AddrHead% EQU 13 GOTO :KELZX_29.x.x.x_
@if %AddrHead% GTR 13 SET FONTCOLOR=6
@start cmd.exe /K "title [MainPath-到FXZX-CSW广域网接口-13.32.0.20]&& color 0%FONTCOLOR% && echo 开始测试时间%TIME% && ping 13.32.0.20 %PINGOPTIONS%"
::@start cmd.exe /K "title [MainPath-到FXZX-ASW的VLAN10上连网关-13.34.11.1]&& color 0%FONTCOLOR% && echo 开始测试时间%TIME% && ping 13.34.11.1 %PINGOPTIONS%"
::@start cmd.exe /K "title [MainPath-到FXZX-ASW的VLAN20上连网关-13.34.19.1]&& color 0%FONTCOLOR% && echo 开始测试时间%TIME% && ping 13.34.19.1 %PINGOPTIONS%"
:KELZX_29.x.x.x_
@SET FONTCOLOR=6
@if %AddrHead% EQU 29 GOTO Stop1stTest
@if %AddrHead% GTR 29 SET FONTCOLOR=e
@start cmd.exe /K "title [MainPath-到KELZX-CSW1广域网接口-29.32.0.30]&& color 0%FONTCOLOR% && echo 开始测试时间%TIME% && ping 29.32.0.30 %PINGOPTIONS%"
::@start cmd.exe /K "title [MainPath-到KELZX-CSW2广域网接口-29.32.0.20]&& color 0%FONTCOLOR% && echo 开始测试时间%TIME% && ping 29.32.0.20 %PINGOPTIONS%"
::@start cmd.exe /K "title [MainPath-到KELZX-ASW1的VLAN1002上连网关-29.32.7.20]&& color 0%FONTCOLOR% && echo 开始测试时间%TIME% && ping 29.32.7.20 %PINGOPTIONS%"
::@start cmd.exe /K "title [MainPath-到KELZX-ASW2的VLAN1005上连网关-29.32.8.20]&& color 0%FONTCOLOR% && echo 开始测试时间%TIME% && ping 29.32.8.20 %PINGOPTIONS%"
::@start cmd.exe /K "title [MainPath-到KELZX-ASW3的VLAN10上连网关-29.33.11.1]&& color 0%FONTCOLOR% && echo 开始测试时间%TIME% && ping 29.33.11.1 %PINGOPTIONS%"
@start cmd.exe /K "title [MainPath-到KELZX-ASW3上的PC-29.33.11.166]&& color 0%FONTCOLOR% && echo 开始测试时间%TIME% && ping 29.33.11.166 %PINGOPTIONS%"
:Stop1stTest
@goto :ExitPing
:StartSndTest
@ECHO 启动到所有站点的SecondPath网络连通性测试...
:DFZX_165.x.x.x_
@if %AddrHead% EQU 65 GOTO :ZKZX_175.x.x.x_
@SET FONTCOLOR=a
@start cmd.exe /K "title [SecondPath-到DFZX-ASW广域网接口-165.32.0.20]&& color 0%FONTCOLOR% && echo 开始测试时间%TIME% && ping 165.32.0.20 %PINGOPTIONS%"
::@start cmd.exe /K "title [SecondPath-到DFZX-ASW的VLAN20上连网关-165.33.11.1]&& color 0%FONTCOLOR% && echo 开始测试时间%TIME% && ping 165.33.11.1 %PINGOPTIONS%"
@start cmd.exe /K "title [SecondPath-到DFZX-ASW上的PC-165.33.11.166]&& color 0%FONTCOLOR% && echo 开始测试时间%TIME% && ping 165.33.11.166 %PINGOPTIONS%"
@start cmd.exe /K "title [SecondPath-到DFZX图像服务器-165.33.11.64]&& color 0%FONTCOLOR% && echo 开始测试时间%TIME% && ping 165.33.11.64 %PINGOPTIONS%"
:ZKZX_175.x.x.x_
@SET FONTCOLOR=a
@if %AddrHead% EQU 75 GOTO :KELZX_193.x.x.x_
@if %AddrHead% GTR 75 SET FONTCOLOR=b
@start cmd.exe /K "title [SecondPath-到ZKZX-CSW广域网接口-175.32.0.20]&& color 0%FONTCOLOR% && echo 开始测试时间%TIME% && ping 175.32.0.20 %PINGOPTIONS%"
::@start cmd.exe /K "title [SecondPath-到ZKZX-ASW1的VLAN20上连网关-175.33.19.1]&& color 0%FONTCOLOR% && echo 开始测试时间%TIME% && ping 175.33.19.1 %PINGOPTIONS%"
::@start cmd.exe /K "title [SecondPath-到ZKZX-ASW2的VLAN20上连网关-175.33.11.1]&& color 0%FONTCOLOR% && echo 开始测试时间%TIME% && ping 175.33.11.1 %PINGOPTIONS%"
::@start cmd.exe /K "title [SecondPath-到ZKZX-ASW3的VLAN20上连网关-175.34.11.1]&& color 0%FONTCOLOR% && echo 开始测试时间%TIME% && ping 175.34.11.1 %PINGOPTIONS%"
:KELZX_193.x.x.x_
@SET FONTCOLOR=b
@if %AddrHead% EQU 93 GOTO :StopSndTest
@if %AddrHead% GTR 93 SET FONTCOLOR=e
@start cmd.exe /K "title [SecondPath-到KELZX-CSW1广域网接口-193.64.0.20]&& color 0%FONTCOLOR% && echo 开始测试时间%TIME% && ping 193.64.0.20 %PINGOPTIONS%"
::@start cmd.exe /K "title [SecondPath-到KELZX-CSW2广域网接口-193.32.0.20]&& color 0%FONTCOLOR% && echo 开始测试时间%TIME% && ping 193.32.0.20 %PINGOPTIONS%"
::@start cmd.exe /K "title [SecondPath-到KELZX-ASW1的VLAN1001上连网关-193.64.7.20]&& color 0%FONTCOLOR% && echo 开始测试时间%TIME% && ping 193.64.7.20 %PINGOPTIONS%"
::@start cmd.exe /K "title [SecondPath-到KELZX-ASW2的VLAN1004上连网关-193.64.8.20]&& color 0%FONTCOLOR% && echo 开始测试时间%TIME% && ping 193.64.8.20 %PINGOPTIONS%"
::@start cmd.exe /K "title [SecondPath-到KELZX-ASW3的VLAN20上连网关-99.33.11.1]&& color 0%FONTCOLOR% && echo 开始测试时间%TIME% && ping 199.33.11.1 %PINGOPTIONS%"
@start cmd.exe /K "title [SecondPath-到KELZX-ASW3上的PC-193.33.11.166]&& color 0%FONTCOLOR% && echo 开始测试时间%TIME% && ping 193.33.11.166 %PINGOPTIONS%"
:StopSndTest
@goto ExitPing
:: *********************************************************************************
:: 子过程01 - GetFileSize
:: SubGetFileSize <<<
:SubGetFileSize
@set /A FileSize=%~z1
::@ECHO 文件%~nx1的大小为%FileSize%字节。
@goto :EOF
:: >>> SubGetFileSize
:ExitPing
@ECHO.
::横向平铺各控制台窗口
@ECHO dim objShell > %TEMPWSHF%
@ECHO Wscript.Sleep 500 >> %TEMPWSHF%
@ECHO. >> %TEMPWSHF%
@ECHO set objShell = CreateObject("Shell.Application") >> %TEMPWSHF%
@ECHO objShell.TileVertically >> %TEMPWSHF%
@ECHO. >> %TEMPWSHF%
@ECHO set objShell = nothing >> %TEMPWSHF%
@ECHO. >> %TEMPWSHF%
@cscript //B %TEMPWSHF%
@PAUSE 按任意键关闭本窗口...
@ECHO ON && endlocal