中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
« [1] [2] [3] »
作者:
标题: 批处理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 楼』:  



  Quote:
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 楼』:  



  Quote:
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为文件本身的短文件名避免调用自身时出错
)

  Quote:
~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 楼』:  



  Quote:
Originally posted by yc421206 at 2007-2-20 02:08:

小弟還是不明白此"%~s0",使用規格以及含意
如試著將它移除,程式即出錯,請問是為什麼呢??

小弟瞭解了
感謝兄您的指導

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

痴迷DOS者


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

写得不错,很实用!



熟能生巧,巧能生精,一艺不精,终生无成,精亦求精,始有所成,臻于完美,永无止境!
金狮電腦軟體工作室愿竭诚为您服务!
QQ群:8393170(定期清理不发言者)
个人网站:http://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 命令,



http://dato.ys168.com
google search bot
http://dato.minidns.net/
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
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] [3] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: