博客首页 注册 建议与交流 排行榜 加入友情链接
推荐 投诉 搜索: 帮助

zenith

  zenith518.cublog.cn

关于作者
姓名:格雷
职业:
年龄:
位置:上海
个性介绍:
|| << >> ||
我的分类


Cping (cmd shell )版本
Cping 是测试网段中网元是否存活的工具。
 
最近利用CmdShell实现了一次。
 
由于cmd中for语句的嵌套功能的局限,利用batch文件解决了for语句的嵌套。
 
运行时,只要cping 网段号 地址个数 | findstr live 就可以列出所有存活地址。
 
例如: cping 10.10.10 254 | findstr live
即可列出10.10.10 网段从 1 到 254 的所有存活地址。
 
 
外套,即主程序。

@echo off
rem main()
setlocal
REM cping.bat
if "%1" == "" goto default1
set seg=%1 goto main1
:default1
set seg=10.0.0
rem echo %seg% goto main1
:main1
if "%2" == "" goto default2
set num=%2
goto main2
:default2
set num=254 goto main2
:main2
for /l %%i in (1,1,%num%) do (
 call inner.bat %seg% %%i
)
endlocal
echo on

 
内套, inner.bat
 

@echo off
for /f "skip=3 tokens=1 usebackq" %%A in (`ping -n 1 -l 1 %1.%2`) do (
                rem echo %%A
                if not "%%A"=="Request" goto alive
                echo %1.%2 is dead.
                goto next
                :alive
                echo %1.%2 is alive.
                :next
                rem noop
)

 
 
zenith 2007.3.5
 
最近研究了一下cmd,发现Call还可以这样写更简洁。
 

@echo off
rem cping.bat
rem main()

setlocal

if not "%1" == "" (
    set seg=%1
) else (
    set seg=10.0.0
)

if not "%2" == "" (
    set num=%2
) else (
    set num=254
)

for /l %%i in (1,1,%num%) do (
    call :innerloop %seg% %%i
)

endlocal

goto :eof

:innerloop

for /f "skip=3 tokens=1 usebackq" %%A in (`ping -n 1 -l 1 %1.%2`) do (

        if not "%%A"=="Request" goto alive
        echo %1.%2 is dead.
        goto next
        :alive
        echo %1.%2 is alive.
        :next
        rem noop
)
goto :eof
@echo on
 
 
zenith 2007.4.6

发表于: 2007-03-05,修改于: 2007-04-06 23:05,已浏览1107次,有评论0条 推荐 投诉


网友评论
 发表评论