中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 搜索 | 上传 | 帮助 »
作者:
标题: 批处理IP扫描器 上一主题 | 下一主题
PPdos
高级用户




积分 783
发帖 268
注册 2006-12-26
状态 离线
『楼 主』:  批处理IP扫描器

网络课设置时 老出现IP冲突 于是就写了一个小程序 运行在别人机器上查看 经修改之后可以扫描不同网段 感谢redtek大虾的多线程思路 现给出源代码:
@echo off

if "%1"=="" goto PPdos
title Finished %s%/100
ping -w 1 -n 1 %1.%2>nul&&call :ananlyse %1.%2
exit

:PPdos
set /p ip=IP adresse (ex:192.168.1):
for /l %%i in (1 1 255) do (
		set /a s=%%i*100/255
		start /B %~s0 %ip% %%i
		if "%%i"=="120" ping 127.0>nul 
)
pause>nul

:ananlyse
for /f "tokens=3,9 delims==: " %%i in ('ping -n 1 -w 2 -a %1^|find "TTL"') do (
	echo.%%i	OK	TTL=%%j
)
加张截图: IPfinder2.bat 去除 find 提高速度降低 内存占用 更改如下
@echo off

if "%1"=="" goto PPdos
title Finished %s%/100
ping -w 1 -n 1 %1.%2 >nul&&call :ananlyse %1.%2
exit

:PPdos
set /p ip=IP adresse (ex:192.168.0):
for /l %%i in (1 1 255) do (
		set /a s=%%i*100/255
		start /B %~s0 %ip% %%i
		if "%%i"=="128" ping 127.0>nul
)
pause>nul

:ananlyse
for /f "tokens=12 delims==. " %%i in ('ping -w 1 -n 1 %1') do (
		if not "%%i"==" " echo.%1	OK	TTL=%%i
)
[ Last edited by PPdos on 2007-2-23 at 12:35 AM ]


   此帖被 +10 点积分       点击查看详情   
评分人:【 redtek 分数: +10  时间:2007-2-17 03:28


附件 1: IPFinder.rar (2007-2-16 10:07, 391 bytes, 下载附件所需积分 1 点 ,下载次数: 156)
附件 2: IPFinder2.rar (2007-2-23 13:36, 381 bytes, 下载附件所需积分 1 点 ,下载次数: 124)


菩提本无树,明镜亦非台,本来无一物,何处惹尘埃.
2007-2-16 10:07
查看资料  发短消息  网志   编辑帖子  回复  引用回复
PPdos
高级用户




积分 783
发帖 268
注册 2006-12-26
状态 离线
『第 2 楼』:  仅扫描IP段的核心代码

@echo off
if "%1"=="" goto PPdos
ping -n 1 -w 1 %1.%2 >nul&&echo.%1.%2	OK
exit
:PPdos
set /p ip=Tapez IP (ex:192.168.1):
for /l %%i in (1 1 255) do (

		start /B %~s0 %ip% %%i
)




菩提本无树,明镜亦非台,本来无一物,何处惹尘埃.
2007-2-16 10:50
查看资料  发短消息  网志   编辑帖子  回复  引用回复
gne3
高级用户

DOS学徒


积分 526
发帖 252
注册 2007-2-12
状态 离线
『第 3 楼』:  

up


2007-2-17 01:05
查看资料  发短消息  网志   编辑帖子  回复  引用回复
yc421206
初级用户





积分 52
发帖 21
注册 2006-1-4
状态 离线
『第 4 楼』:  

Originally posted by PPdos at 2007-2-16 10:07: 网络课设置时 老出现IP冲突 于是就写了一个小程序 运行在别人机器上查看 经修改之后可以扫描不同网段 感谢redtek大虾的多线程思路 现给出源代码 ...
dear sir: 請問"start /B %~s0 %ip% %%i" 這句是什麼意思呢? 這整句我都不曉得在幹什麼用的 煩請為我解答,謝謝


2007-2-19 13:35
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
yc421206
初级用户





积分 52
发帖 21
注册 2006-1-4
状态 离线
『第 5 楼』:  

Originally posted by yc421206 at 2007-2-19 13:35: dear sir: 請問"start /B %~s0 %ip% %%i" 這句是什麼意思呢? 這整句我都不曉得在幹什麼用的 煩請為我解答,謝謝
小弟還是不明白此"%~s0",使用規格以及含意 如試著將它移除,程式即出錯,請問是為什麼呢??


2007-2-20 02:08
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
PPdos
高级用户




积分 783
发帖 268
注册 2006-12-26
状态 离线
『第 6 楼』:  分析

这个程序很有意思 我想重新做下诠释,希望能让大家理解: @echo off if "%1"=="" goto PPdos ::注释:运行程序后 如果参数没有定义 则调用模块 PPdos ping -n 1 -w 1 %1.%2 >nul&&echo.%1.%2 OK ::注释:用一个数据包最多一秒延时的方法ping 参数1.参数2(即ip),成功就显示ok exit :PPdos set /p ip=Tapez IP (ex:192.168.1): ::注释:定义ip的前三位 for /l %%i in (1 1 255) do ( ::注释:ip第四位用for循环出来 start /B %~s0 %ip% %%i ::注释:此句很难理解 意思是在原dos窗口内调用自身,并把%ip%作为第一个参数, %%i作为第二个参数。%~s0为文件本身的短文件名避免调用自身时出错 )
~I - 删除任何引号("),扩充 %I %~fI - 将 %I 扩充到一个完全合格的路径名 %~dI - 仅将 %I 扩充到一个驱动器号 %~pI - 仅将 %I 扩充到一个路径 %~nI - 仅将 %I 扩充到一个文件名 %~xI - 仅将 %I 扩充到一个文件扩展名 %~sI - 扩充的路径只含有短名 %~aI - 将 %I 扩充到文件的文件属性 %~tI - 将 %I 扩充到文件的日期/时间 %~zI - 将 %I 扩充到文件的大小 %~$PATH:I - 查找列在路径环境变量的目录,并将 %I 扩充 到找到的第一个完全合格的名称。如果环境变量名 未被定义,或者没有找到文件,此组合键会扩充到
[ Last edited by PPdos on 2008-4-2 at 07:33 AM ]




菩提本无树,明镜亦非台,本来无一物,何处惹尘埃.
2007-2-20 13:39
查看资料  发短消息  网志   编辑帖子  回复  引用回复
yc421206
初级用户





积分 52
发帖 21
注册 2006-1-4
状态 离线
『第 7 楼』:  

Originally posted by yc421206 at 2007-2-20 02:08: 小弟還是不明白此"%~s0",使用規格以及含意 如試著將它移除,程式即出錯,請問是為什麼呢??
小弟瞭解了 感謝兄您的指導


2007-2-21 13:55
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
Kinglion
铂金会员

痴迷DOS者


积分 5798
发帖 1924
注册 2003-6-20
来自 金獅電腦軟體工作室
状态 离线
『第 8 楼』:  

写得不错,很实用!




熟能生巧,巧能生精,一艺不精,终生无成,精亦求精,始有所成,臻于完美,永无止境! 金狮電腦軟體工作室愿竭诚为您服务! QQ群:8393170(定期清理不发言者) 个人网站:www.520269.cn 电子邮件:doujiehui@vip.qq.com 微信公众号: doujiehui
2007-2-21 20:57
查看资料  发送邮件  访问主页  发短消息  网志  OICQ (79207959)  编辑帖子  回复  引用回复
lzmyst
新手上路





积分 19
发帖 10
注册 2005-12-13
状态 离线
『第 9 楼』:  

学习了。 谢谢兄的共享。


2007-2-21 23:52
查看资料  发短消息  网志   编辑帖子  回复  引用回复
vkill
金牌会员





积分 4103
发帖 1744
注册 2006-1-20
来自 甘肃.临泽
状态 离线
『第 10 楼』:  

不如直接 arp -a


2007-2-23 00:14
查看资料  发送邮件  访问主页  发短消息  网志   编辑帖子  回复  引用回复
peterdocter
中级用户




积分 379
发帖 95
注册 2003-7-17
状态 离线
『第 11 楼』:  

这个我用cpu都占到快没有了!太占资源了吧?用了之后要终止都非常难,好像假死机一样!


2007-3-1 01:35
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
dato
高级用户




积分 916
发帖 377
注册 2004-3-8
状态 离线
『第 12 楼』:  

这段代码还是对机房来说还是非常实用的。 刚刚用arp -a显示的IP非常有限,ping这种方式又可能受到防火墙阻挡。 但通过LZ这段脚本批量ping过局域网再使用arp -a 方式就能比较准确的获得局域网中在线的IP 所以希望LZ结合一下arp 命令,




2007-3-1 23:12
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
PPdos
高级用户




积分 783
发帖 268
注册 2006-12-26
状态 离线
『第 13 楼』:  回复

13楼的问题在内存不足或IP段内在线主机过多确会发生 所以要在运行此程序前关闭其他应用程序 (正常情况下几十秒钟即可完成扫描) 14楼建议的arp可以在扫描过后直接运行 arp -a 命令来完成更为灵活




菩提本无树,明镜亦非台,本来无一物,何处惹尘埃.
2007-3-4 05:19
查看资料  发短消息  网志   编辑帖子  回复  引用回复
574855721
初级用户





积分 25
发帖 13
注册 2007-3-5
状态 离线
『第 14 楼』:  

内网用的吗?作用是?


2007-3-5 12:47
查看资料  发送邮件  发短消息  网志  OICQ (574855721)  编辑帖子  回复  引用回复
zfkj
新手上路





积分 4
发帖 2
注册 2007-3-5
状态 离线
『第 15 楼』:  

呵呵,不错啊。支持


2007-3-5 18:18
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: