批处理 - 在多个站点上Ping

时间:2017-10-24 17:56:40

标签: windows batch-file ping

所以我想连续15次使用相同的数据大小ping 20个不同的站点,并将它们的平均RTT转换成文件。但是我还必须检查相同的IP以获得不同大小的ping数据,每次从8到2048乘以2(8,16,32,64等)。

我尝试开发自己的代码,这是我到目前为止所做的。

@echo off
CLS
ping -n 1 %1|find "Reply" > nul
CLS
IF %ERRORLEVEL% == 0 ( FOR %%G IN (8,16,32,64,128,256,512,1024,2048) DO (echo Pinging with %%G byte of data... & ping -n 1 -l %%G %1|findstr /x "^.*Request.* ^.*Lost.*  ^.*Average.*ms" >> results.txt)) ELSE (ECHO The Server %1 did not respond) 

为了便于阅读:

@echo off
CLS
ping -n 1 %1
CLS
IF %ERRORLEVEL% == 0 
( 
    FOR %%G IN (8,16,32,64,128,256,512,1024,2048) DO 
    (
        echo Pinging with %%G byte of data... &
        ping -n 15 -l %%G %1|findstr /x "^.*Request.* ^.*Lost.*  ^.*Average.*ms" >> results.txt
) 
ELSE
( ECHO "The Server did not respond" )

我想要完成的是,一个批处理文件,接受10个(或者如果可能的话,15个)参数,这些参数是网站用8,16,32,...,2048对每个站点进行15次ping操作并且如果服务器出于任何原因在我的某些ping请求中给了我一个请求超时,我想停止这个参数的循环并继续下一个但我希望它写入文件"请求超时"

在我的代码中,我试图检查服务器是否响应我的ping请求,如果我得到回复然后开始我的FOR循环。

虽然我无法在任何给定时间检查服务器是否仍然接受我的ping,但是当我有2048字节的数据包时,这种情况会更频繁地发生。如果服务器给我一个" NO"然后我得到一个"请求超时"。

因此,对于某种代码实现,我想检查命令

ping -n 15 -l %%G %1|findstr /x "^.*Request.* ^.*Lost.*  ^.*Average.*ms" 

将打印 请求超时 ,这样我就可以停止ping并移动下一个参数,这样就不会打扰ping相同的IP 15次。

此外,通过上述实现,如果服务器响应,我将不必检查脚本的开头,因为它将在FOR循环中执行。

我认为参数切换并不难实现,它只是一个转变和一些标签。

提前感谢您的时间,我很乐意为您提供更多关于以下表彰的解释!

0 个答案:

没有答案