一键批量ping任意ip段的存活主机
2015-11-06 09:22
197 查看
=======================by me=====================================
@echo off
echo.
color FC
for /f %%i in (pingip.txt) do (
ping -w 1200 -n 1 %%i|find /i "正在"
ping -w 1200 -n 2 %%i|find /i "TTL"
echo.
)
echo.&echo 感谢小明扫描完毕,随便退出...&pause>nul
============================================================
今晚继续我们的电脑批处理系列教程。如果想知道自己的小区宽带或局域网,甚至外网任意某一ip段,目前有多少人同时在上网肿么办呢?可能大家想到的一定是找工具什么的。其实不然,利用Windows内置的批处理功能完全可以实现批量ping查找指定网段存活主机的目的!
@echo off
color e
title
批处理扫网段主机
echo.
@for /f "tokens=1-4 delims=."
%%i in (ip.txt) do (@for /l %%n in (1,1,255) do @ping -w 600 -n 1
%%i.%%j.%%k.%%n|find /i "ttl")
echo.&echo
扫描完毕,按任意键退出...&pause>nul
复制以上代码粘贴到记事本文档里,然后另存为 批量ping.bat
,再新建一个空白的文本文档,重命名为 ip.txt
。一切准备完事儿,就可以将你要批量扫描的ip段的地址放入ip.txt里(比如要扫自己对应的内网IP段就可以在ip.txt里输入
192.168.1.1 后保存),然后双击一键运行 批量ping.bat 批处理脚本就可以看到返回的结果了。格式类似于:
Reply from 192.168.1.1: bytes=32
time=2ms TTL=64
Reply from 192.168.1.2: bytes=32 time=3ms TTL=64
Reply
from 192.168.1.3: bytes=32 time=2ms TTL=64
Reply from 192.168.1.5: bytes=32
time=2ms TTL=64
Reply from 192.168.1.6: bytes=32 time=1ms
TTL=64
……此处省略余下的所有可能的结果……
下面我就来解读一下介个看起来有点儿吃力的批处理命令吧。我们分拆来看一下,ping -w
600 -n 1 表示对指定ip地址ping一次,等待超时的时间为600毫秒;|find /i "ttl"
指的是仅显示ping返回结果中带“ttl”字符串的结果,也就是将指定网段内不存活的主机过滤掉了。而前面的 @for /f "tokens=1-4 delims=." %%i in (ip.txt)
意思是将“ip.txt”里的字符串(也就是我们要查找的ip段的地址)以“.”为界分割为四部分,分别赋予后面的变量 %%i、%%j、%%k 。最后剩下的
@for /l %%n in (1,1,255)
则表示从1开始循环+1递增一直到255停止,然后赋予变量 %%n 。看不懂滴可以在cmd窗口里输入 for /?
查看一下命令详解吧。
!
@echo off
echo.
color FC
for /f %%i in (pingip.txt) do (
ping -w 1200 -n 1 %%i|find /i "正在"
ping -w 1200 -n 2 %%i|find /i "TTL"
echo.
)
echo.&echo 感谢小明扫描完毕,随便退出...&pause>nul
============================================================
一键批量ping任意ip段的存活主机
1、如果IP连续,例如(192.168.1.1-192.168.1.10): @echo off&setlocal ENABLEDELAYEDEXPANSION if exist onlist.txt if exist offlist.txt for /l %%i in (1,1,10) do ( ping -n 1 192.168.1.%%i>nul 2>nul if !errorlevel!==0 (echo 192.168.1.%%i >>c:\bat\onlist.txt) else (echo 192.168.1.%%i >>c:\bat\offlist.txt) ) 2、如果IP不连续,那使用一个文件plist写入要测试的地址列表,然后批处理: @echo off&setlocal ENABLEDELAYEDEXPANSION if exist c:\bat\onlist.txt del c:\bat\onlist.txt if exist c:\bat\offlist.txt del c:\bat\offlist.txt for /f %%i in (c:\bat\pclist.txt) do ( ping -n 1 %%i>nul 2>nul if !errorlevel!==0 (echo %%i >>c:\bat\onlist.txt) else (echo %%i >>c:\bat\offlist.txt) )
今晚继续我们的电脑批处理系列教程。如果想知道自己的小区宽带或局域网,甚至外网任意某一ip段,目前有多少人同时在上网肿么办呢?可能大家想到的一定是找工具什么的。其实不然,利用Windows内置的批处理功能完全可以实现批量ping查找指定网段存活主机的目的!
@echo off
color e
title
批处理扫网段主机
echo.
@for /f "tokens=1-4 delims=."
%%i in (ip.txt) do (@for /l %%n in (1,1,255) do @ping -w 600 -n 1
%%i.%%j.%%k.%%n|find /i "ttl")
echo.&echo
扫描完毕,按任意键退出...&pause>nul
复制以上代码粘贴到记事本文档里,然后另存为 批量ping.bat
,再新建一个空白的文本文档,重命名为 ip.txt
。一切准备完事儿,就可以将你要批量扫描的ip段的地址放入ip.txt里(比如要扫自己对应的内网IP段就可以在ip.txt里输入
192.168.1.1 后保存),然后双击一键运行 批量ping.bat 批处理脚本就可以看到返回的结果了。格式类似于:
Reply from 192.168.1.1: bytes=32
time=2ms TTL=64
Reply from 192.168.1.2: bytes=32 time=3ms TTL=64
Reply
from 192.168.1.3: bytes=32 time=2ms TTL=64
Reply from 192.168.1.5: bytes=32
time=2ms TTL=64
Reply from 192.168.1.6: bytes=32 time=1ms
TTL=64
……此处省略余下的所有可能的结果……
下面我就来解读一下介个看起来有点儿吃力的批处理命令吧。我们分拆来看一下,ping -w
600 -n 1 表示对指定ip地址ping一次,等待超时的时间为600毫秒;|find /i "ttl"
指的是仅显示ping返回结果中带“ttl”字符串的结果,也就是将指定网段内不存活的主机过滤掉了。而前面的 @for /f "tokens=1-4 delims=." %%i in (ip.txt)
意思是将“ip.txt”里的字符串(也就是我们要查找的ip段的地址)以“.”为界分割为四部分,分别赋予后面的变量 %%i、%%j、%%k 。最后剩下的
@for /l %%n in (1,1,255)
则表示从1开始循环+1递增一直到255停止,然后赋予变量 %%n 。看不懂滴可以在cmd窗口里输入 for /?
查看一下命令详解吧。
!
相关文章推荐
- Android Manifest <meta-data>
- lvs算法
- 第十周项目1 - 二叉树算法库
- 前言
- 第10周 项目2—二叉树遍历的递归算法 .
- 【Android】文件操作工具类(FileUtil.java)
- 深度学习为何起作用——关键解析和鞍点
- Android系列教程之EditText使用详解-包含很多教程上看不到的功能演示
- Linux中Workqueue机制分析
- 打造安全的App!iOS安全系列之 HTTPS 进阶
- 第十周 项目3-利用二叉树遍历思想解决问题(3)
- 第9周实践项目3 稀疏矩形的三元组表示的实现
- 内部类,static关键字,接口和抽象类.
- rpm包安装MySQL5.7
- 傅立叶变换中的时间和频率
- 关于a 标签变为块级元素的作用
- 关于EditText禁止输入空格的方法
- uvalive 6680 - Join the Conversation 动态规划
- 散列表实现
- Matlab与C++混合编程,添加OpenCV库