Board logo

标题: [网络连接] 【已解决】批处理如何筛选出符合指定平均响应时间数和丢包数的ip? [打印本页]

作者: wangdao6699    时间: 2015-12-25 20:04     标题: 【已解决】批处理如何筛选出符合指定平均响应时间数和丢包数的ip?

本帖最后由 wangdao6699 于 2015-12-26 13:07 编辑

多个ip 地址的在一个名为ip列表.txt
输出 平均延迟100ms 以下 丢包为0
输出到另外一个文本里如提取IP.txt
格式如: 22.233.211.76   65
前面是  IP地址 后面是平均延迟
作者: /zhqsystem/zhq    时间: 2015-12-26 00:07

回复 1# wangdao6699
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in ('type "%~dp0\1.txt"')do ping/n "1" "%%~i" >nul 2>nul&&(
  3. for /f "delims=" %%j in ('ping "%%~i"^|findstr/n .')do (
  4.   for /f "delims=:" %%k in ("%%j")do if %%k geq 3 if %%k neq 8 if %%k neq 10 (
  5.    set "#%%i#_name#=%%j"
  6.    set "#%%i#_name#=!#%%i#_name#:<=!"
  7.    set "#%%i#_name#=!#%%i#_name#:>=!"
  8.    set "#%%i#_name#=!#%%i#_name#: (=(!"
  9.    set "#%%i#_name#=!#%%i#_name#: =\!"
  10.    set "#%%i#_name#=!#%%i#_name#:ms=!"
  11.    set "#%%i#_name#=!#%%i#_name#:s=!"
  12.    if %%k geq 3 if %%k leq 6 (
  13.     rem::echo,!#%%i#_name#!
  14.    )else if %%k equ 9 (
  15.     for /f "delims=(" %%l in ("!#%%i#_name#!")do (
  16.      rem::echo,%%i丢失:%%~nxl
  17.      set "#%%i#_if1#=%%~nxl"
  18.     )
  19.    )else if %%k equ 11 (
  20.     for /f "delims=(" %%l in ("!#%%i#_name#!")do (
  21.      rem::echo,%%i平均速率:%%~nxl
  22.      set "#%%i#_if2#=%%~nxl"
  23.     )
  24.    )
  25.    rem::此行为判断行并导出实体数据
  26.    if !#%%i#_if1#! equ 0 if !#%%i#_if2#! leq 100 if not defined #%%i# (
  27.     set/a "#%%i#_number+=1"
  28.     if !#%%i#_number! geq 6 (
  29.      set "#%%i#=yes"
  30.      (echo,i  p: %%i
  31.      echo,速率: !#%%i#_if2#!
  32.      echo,丢失: !#%%i#_if1#!)
  33.     )
  34.    )
  35.   )
  36. )
  37. )
  38. pause
复制代码

作者: wangdao6699    时间: 2015-12-26 12:12

回复 2# /zhqsystem/zhq

经测试有效,非常感谢
作者: pcl_test    时间: 2015-12-26 13:26

水一发
  1. @echo off
  2. for /f %%a in (IP列表.txt) do (
  3.     setlocal enabledelayedexpansion
  4.     for /f "tokens=3 delims=,(,(" %%b in ('ping %%a^|findstr /i "Lost Average 丢失 平均"') do (
  5.         for /f "tokens=2 delims==ms " %%c in ("%%b") do (
  6.             set /a n+=1
  7.             set #!n!=%%c
  8.         )
  9.     )
  10.     if !#1! equ 0 if !#2! lss 100 echo;%%a    !#2!
  11.     endlocal
  12. )
  13. pause
复制代码

作者: pcl_test    时间: 2015-12-26 14:04

回复 5# 回家路上

没有测试过英文系统,查了下xp用的是这两单词,自以为如此,所以说是“水一发”
作者: 回家路上    时间: 2015-12-26 14:09

五楼已匿 O(∩_∩)O哈!
网太卡,纯手抖。




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2