批量Ping工具

来源:互联网 发布:dns域名查询重定向 编辑:程序博客网 时间:2024/04/24 03:39

//使用Ping命令制作的批量Ping工具,可对一个连续Ip段进行ping测试,并将结果记录到txt文件

//文件名:IPing.bat

//代码:

@if "%~1"=="" color 8f&mode con cols=60 lines=15
@title IPing_Besoft
@echo off
@echo 该工具由Beswor制作,谢谢使用!
@echo ═════════════════════════════
:Input
set /p a=起始IP值(*.*.*.*):
set /p b=IP数量(个):
set /p c=每IP次数(次):
set /p t=间隔时间(ms):
@echo **************************************
set /a V=0
set Shu=0
set /a i=0
for /f "delims=:. tokens=1-4" %%1 in ("%a%") do (
set /a a1=%%1%
set /a a2=%%2%
set /a a3=%%3%
set /a a4=%%4%
)

set /a p1=%a1%
set /a p2=%a2%
set /a p3=%a3%
set /a p4=%a4%

if %p1% GTR 255 (
@echo 输入IP不符合规范,请重新输入!
goto Input)
if %p2% GTR 255 (
@echo 输入IP不符合规范,请重新输入!
goto Input)
if %p3% GTR 255 (
@echo 输入IP不符合规范,请重新输入!
goto Input)
if %p4% GTR 255 (
@echo 输入IP不符合规范,请重新输入!
goto Input)
if %p1% LSS 0 (
@echo 输入IP不符合规范,请重新输入!
goto Input)
if %p2% LSS 0 (
@echo 输入IP不符合规范,请重新输入!
goto Input)
if %p3% LSS 0 (
@echo 输入IP不符合规范,请重新输入!
goto Input)
if %p4% LSS 0 (
@echo 输入IP不符合规范,请重新输入!
goto Input)

set /a p4t=(b+p4)%%256
set /a p3t=(((b+p4)-((b+p4)%%256))/256+p3)%%256
set /a p2t=(((((b+p4)-((b+p4)%%256))/256+p3)-(((b+p4)-((b+p4)%%256))/256+p3)%%256)/256+p2)%%256
set /a p1t=(((((((b+p4)-((b+p4)%%256))/256+p3)-(((b+p4)-((b+p4)%%256))/256+p3)%%256)/256+p2)-(((((b+p4)-((b+p4)%%256))/256+p3)-(((b+p4)-((b+p4)%%256))/256+p3)%%256)/256+p2)%%256)/256+p1)%%256


@echo %date% >IPinglog.txt
@echo 从%p1%.%p2%.%p3%.%p4%到%p1t%.%p2t%.%p3t%.%p4t%,Ping通的结果如下:>>IPinglog.txt
@echo 从%p1%.%p2%.%p3%.%p4%到%p1t%.%p2t%.%p3t%.%p4t%
@echo (共ping了%b%个IP地址,每个IP ping%c%次,超时时间%t%ms)>>IPinglog.txt
@echo (共要ping%b%个IP地址,每个IP ping%c%次,超时时间%t%ms)
@echo ━━━━━━━━━━━━━━━━━━━━━━━━━━━━>>IPinglog.txt
@echo **************************************
@echo 开始……
@echo ━━━━━━━━━━━━━━━━━━━━━━━━━━━━

:Ping
    if %i%==%b% (goto End)
    set /a i=%i%+1


    if %p4%==255 (
    if %p3%==255 (
    if %p2%==255 (
    if %p1%==255 (
@echo 已超出IP地址范围
goto End))))

    if %p4%==255 (
    if %p3%==255 (
    if %p2%==255 (
set /a p4=-1
set /a p3=0
set /a p2=0
set /a p1=%p1%+1
goto Core)))

    if %p4%==255 (
    if %p3%==255 (
set /a p4=-1
set /a p3=0
set /a p2=%p2%+1
goto Core))

    if %p4%==255 (
set /a p4=-1
set /a p3=%p3%+1
goto Core)

 

:Core

    set /a p4=%p4%+1
    set p=%p1%.%p2%.%p3%.%p4%
    set /a d=6+%c%
    for /f "skip=%d% delims=" %%i in ('ping /n %c% /w %t%  %p%') do (
    if /i "%%i"=="" (
    @echo 未ping通>>IPinglog.txt
    )else (
    for /f "delims== tokens=1-4" %%1 in ("%%i") do (
    set ti=%%4%
    @echo %p%  %%4%   %   %time%%>>IPinglog.txt
    )

   
    set /a V=%V%+1))
    set /a Shu+=1
    set /a Rate=100*%Shu%/%b%
    set /p=<nul
    set /p=正在Ping %p%…… (已完成%Rate%%%,已Ping通%V%个IP)<nul
    goto Ping

:End
@echo ━━━━━━━━━━━━━━━━━━━━━━━━━━━━>>IPinglog.txt
@echo (通了%V%个)>>IPinglog.txt
@echo 。
@echo 结束
@echo **************************************
start IPinglog.txt
pause
cls
goto Input

 

原创粉丝点击