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
阅读(3187) | 评论(0) | 转发(0) |