批处理查看同一子网络下的所有IP在线情况_DOS/BAT

本文的批处理可以让您知道自己所在局域网的同一网段下都有哪些IP被使用了。不得不承认,我在创造这个批处理的时候想法很奇怪,甚至有些愚蠢。

:::::::查看所有子网IP.bat:::::::
@echo off
title 查看所有子网IP

set /a Online=0
set /a Offline=0
set /a Total=256
set ExportFile=子网IP在线统计.txt
:: 初始化在线IP与不在线IP的个数为零,共扫描256个IP,结果输出的文件名

set StartTime=%time%
:: 记录程序的开始时间

for /f "delims=: tokens=2" %%i in ('ipconfig /all ^| find /i "IP Address"') do set IP=%%i
:: 获得本机IP [注1]

if "%IP%"=="" echo 未连接到网络 & pause & goto :EOF
if "%IP%"==" 0.0.0.0" echo 未连接到网络 & pause & goto :EOF
:: 当IP为空或 0.0.0.0 时,提示未连接并退出该程序

for /f "delims=. tokens=1,2,3,4" %%i in ("%IP%") do (
  set /a IP1=%%i
  set /a IP2=%%j
  set /a IP3=%%k
  set /a IP4=%%l
)
:: 以句点为分隔符,分别将IP的四个十进制数赋给四个变量

set /a IP4=0
echo 在线的IP:>%ExportFile%
:: 初始化IP的第四个数值为零,并创建结果输出文件

:RETRY
ping %IP1%.%IP2%.%IP3%.%IP4% -n 1 -w 200 -l 16>nul && set /a Online+=1 && echo %IP1%.%IP2%.%IP3%.%IP4%>>%ExportFile% || set /a Offline+=1
:: ping 目标IP [注2]

set /p =[将本文底部评论4中的退格符替换到此处]set /a Scanned=%Online%+%Offline%
set /a Progress=(%Online%+%Offline%)*100/%Total%
set /p =正在扫描:%Scanned%/%Total% 扫描进度:%Progress%%%:: 删除当前行的内容,并重新显示进度信息 [注3]

set /a IP4+=1
if %IP4% lss %Total% goto :RETRY
:: 当IP的第四个数值小于总数时,跳转回 :RETRY 处,重复执行直到全部 ping 完为止

echo.
echo.

set EndTime=%time%
:: 记录程序的结束时间

set /a Seconds = %EndTime:~6,2% - %StartTime:~6,2%
set /a Minutes = %EndTime:~3,2% - %StartTime:~3,2%
if %Seconds% lss 0 set /a Seconds += 60 & set /a Minutes -= 1
if %Minutes% lss 0 set /a Minutes += 60
:: 计算时间差

set /a Percent=%Online%*100/(%Online%+%Offline%)
:: 计算在线百分比

echo 在线IP个数:  %Online%
echo 不在线IP个数: %Offline%
echo 在线百分比:  %Percent%%%
echo 统计耗时:   %Minutes%分%Seconds%秒
echo 统计日期:   %date% %time:~0,-3%
echo.>>%ExportFile%
echo 在线IP个数:  %Online%>>%ExportFile%
echo 不在线IP个数: %Offline%>>%ExportFile%
echo 在线百分比:  %Percent%%%>>%ExportFile%
echo 统计耗时:   %Minutes%分%Seconds%秒>>%ExportFile%
echo 统计日期:   %date% %time:~0,-3%>>%ExportFile%
echo 记录已保存到文件"%ExportFile%"中
::显示结果并将结果保存到文件中
pause
::::::::::::::::::::::::::::::::

注1. ipconfig 是内置于 Windows 的 TCP/IP 应用程序,用于显示本地计算机网络适配器的物理地址和IP地址等配制信息,这些信息一般用来检验手动配置的 TCP/IP 设置是否正确。当在网络中使用 DHCP 服务时, ipconfig 可以检测到计算机中分配到了什么IP地址,是否配置正确,并且可以释放,重新获取IP地址。这些信息对于网络测试和故障排除都有重要的作用。[3]
更详细的说明请参阅 ipconfig/? 。ipconfig /all ,参数 /all 表示查看详细的网络配置。命令 ipconfig /all ^| find /i "IP Address" 表示在 'ipconfig /all 的结果中,以 "IP Address" 为查找对象,进行搜索(其结果类似于:IP Address. . . . . . . . . . . . : 10.30.11.51 )。

而整条命令中的 for 语句,则表示在上述结果中,以冒号为间隔(delims=:),查找第2个字串(tokens=2)。很明显,所找到的结果就是自己电脑当前的IP地址了(如果您只有一快网卡或是只启用了一个网卡的话。显然,对于多个网卡会显示出多个IP的情况,我并没有考虑的太全面)。[关于 for 更详细请参阅 4.2.4 小节]

另外,注意到在 ipconfig /all ^| find /i "IP Address" 中有一个转义字符 ^ ,它的作用是让后面的管道命令 | 生效,而不是让程序把 | 误解为 for 语句里参数的一部分。

注2. ping 其实才是本批处理的核心部分。命令 ping 的主要作用是通过发送数据包并接收应答信息来检测两台计算机之间的网络是否连通。比如我可以输入 ping 10.30.11.35 以便查看我是否能与我所在的局域网中IP为 10.30.11.35 的机器连通。如果我不懂批处理的话,也许我就得从 IP 10.30.11.1 开始,挨个地 ping 到 IP 10.30.11.255 ,才能达到我在本小节的最初目的。

在批处理中 ping 的3个参数 -n 1 -w 200 -l 16 分别表示:仅 ping 一遍[-n 1],等待200毫秒后按超时考虑[-w 200],发送16字节的数据[-l 16]。

另外,此命令行中同时用到了两个 && 和一个 || 的组合命令,我不得不承认这种复杂的逻辑关系会给您带来阅读上的困难。

注3. 这里使用了 set /p =显示内容

本文的使用程度并不大,却很有趣,至少并没有想象中的那么愚蠢。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索批处理
查看IP
批处理查看ip、查看本机ip批处理、批处理查看ip地址、查看ip bat、dos命令查看ip地址,以便于您获取更多的相关知识。

时间: 2024-09-21 06:44:34

批处理查看同一子网络下的所有IP在线情况_DOS/BAT的相关文章

用批处理记录服务器远程终端3389登陆情况_DOS/BAT

如果服务器有多个用户或查看是否有其他非法用户登录的时候是比较有用的. 在D盘目录下,创建2个文件"ts2003.BAT"(用户登录时运行的脚本文件)和"ts2003.LOG"(日志文件). 编写"ts2003.BAT"脚本文件: 复制代码 代码如下: time /t >>ts2003.log netstat -n -p tcp | find ″:3389″>>ts2003.log start Explorer 第一行代码用

Ghost安装Win7/XP后自动恢复IP的批处理代码(ip备份恢复)_DOS/BAT

今天维护人员找的我说,最近要推Win7了,暂时桌面云没推广,还是使用手动安装Win7的方式.所以,需要我帮忙写一个脚本,大概功能就是在Ghost Win7之前先导出XP的IP信息,在Ghost完成之后,自动读取这个IP信息用于恢复IP设置. Ghost安装Win7/XP后自动恢复IP的批处理 之前其实写过一个XP的,这次是Win7的,其实大同小异了,花了近半小时测试成功了,现在来记录一下. 懒得去折腾兼容方法,就写了2个导出IP的脚本和一个IP恢复脚本,用于Ghost远程安装Win7后自动恢复I

查看Win7系统下各进程内存消耗情况的方法

win7系统自带有Windows任务管理器,不但能帮助用户快捷查看系统进程或软件所占的物理内存大小,还能帮助用户快速查看软件所占虚拟内存的大小,下面小编给大家带来的是惠普笔记本win7系统下怎样查看软件所耗虚拟内存.具体操作方法如下: 1.按"ctrl+alt+delete"组合键打开"windows 任务管理器"窗口,点击菜单栏的"查看-选择列"命令. 2.在打开的"选择进程页列"窗口中,选中"内存--提交大小&q

批处理下使用筛选器的函数_DOS/BAT

与命令重新定向管道符 (|) 联合使用,命令筛选器是这样一个命令,该命令包含在可读取命令的输入.可转换输入并写入输出的命令里.筛选器命令可以帮助您排序.查看和选择部分命令输出. 筛选器命令可以划分.重排以及提取通过的部分信息操作.下表列出 Windows XP 中可用的筛选器命令. 命令 说明  more 在一个命令提示符窗口中每次显示一个文件的内容或一个命令的输出.  find 在文件和命令输出中搜索您所指定的字符.  sort 按字母顺序排列文件和命令输出.  要将输入从文件发送到筛选器命令

DOS下网络浏览器的使用方法_DOS/BAT

DOS是个功能十分强大的操作系统,因此它的功能也比较全面.近年来随着网络的发展,网络软件就非常重要了.因此,DOS下近年来也出现了不少相应的软件,其中最重要的莫过于网络浏览器了.这些DOS下的网络浏览器可以分为图形浏览器和文本浏览器两大类.其中Arachne是前者中功能最强大的一个,也最为出名.而后者则有Lynx,Minuet等,下面介绍一下它们的用法.     Arachne的最新版本是1.70,可在"DOS软件"中下载.它自带众多网络功能,除通常的FTP,HTTP功能外,还支持PO

用批处理一键安装两种扩展名的Windows系统补丁_DOS/BAT

每个人都可能重装过操作系统.可每次安装好操作系统后花费时间最长的就是下载补丁安装补丁了,往往下载补丁安装补丁都花去了大半天的事情,在Vista以后,微软发布的补丁大都是msu的,当然也有少部份还是以前的exe.下面介绍一种针对这两种扩展名的系统补丁快速安装的办法. 借助软件下载最新的系统补丁并保存在spacks文件夹,在该文件夹内新建一文本文件,输入以下代码 @Echo Off Title Install Windows Update pack Echo 正在安装Windows系统补丁,请稍等.

批处理实现文本内容横列变纵列的代码_DOS/BAT

因为论坛会吞掉文本每行的第一个空格,现截图上来. 每行的字符数都一样,但未知多少个字符. 注意,文本第三行r之后有一个空格.第四行x之后有一个空格. 输出为: 即横列变纵列,并保留原来空格. 要求,高效,不生成临时文件. batman: 复制代码 代码如下: @echo off for /f "delims=" %%. in (1.txt) do set "_=0"&set "..=%%."&call :{} for /l %%+

Windows7下获得System权限问题解决方法_DOS/BAT

Windows7下MS加强了权限的问题,但这个神秘的无处不在的system居然比administrator还大而又不能登录实在是让人不能理解,特别是很多的目录居然都要system的权限才能删除,真是让人头痛. 下面有一个脚本,可以在得到命令行下的system权限,其实原理很简单,因为服务居然是system权限运行的,真是让人难以理解.但,这想法实在是很帅,我很喜欢: 复制代码 代码如下: sc Create SuperCMD binPath= "cmd /K start" type=

BAT批处理实现软件的自动安装(以搜狗拼音为例)_DOS/BAT

下面以安装搜狗拼音为例做个小实验,其他软件的安装可以以此作为参考来实现. 实验目标: 使用批处理实现搜狗拼音的自动安装 实验步骤: 1.下载搜狗拼音的安装包,本实验使用sogou_pinyin_50a.exe. 2.在安装包所在目录下新建批处理文件sogou_install.bat. 3.编辑批处理文件sogou_install.bat,输入以下命令并保存. 复制代码 代码如下: start /wait .\sogou_pinyin_50a.exe /S  4.双击批处理文件执行之. 5.要是以