中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-01 22:11
48,037 主题排行 / 350,122 发帖 / 今日 2 篇 / 48,250 会员排行
DOS批处理 & 脚本技术(批处理室) » 查看局域网内在线的电脑的IP地址(批处理)
可打印版本  8,794 / 21
第1楼 bagpipe 发表于 2006-02-17 14:36
银牌会员 发帖 425 积分 1,144 来自 北京
查看局域网内在线的电脑的IP地址(批处理)
呵呵,大家好,偶又回来玩儿喽,这次弄个实用的,不好用可别怪我哈,请看下面代码:

@echo off
arp -d
for /l %%i in (0,1,128) do ping 192.168.1.%%i -n 1 >nul
arp -a >11.txt
arp -d
for /l %%i in (128,1,255) do ping 192.168.1.%%i -n 1 >nul
arp -a >>11.txt
arp -d

完了,就这么点,PING虽然也可以判断对方机器是否在线,不过成功率实在不敢恭维,效率也差的要命,还是用ARP好些,不过使用他的人一定要注意他的网段是192.168.1.0-192.168.1.255这个大家根据自己的情况改好了,不过运行速度不是太快,可能是PING给延误的,不过确实很实用的,大概解释一下,有人会问了,为什么你不直接把整段IP给FOR运行呢,我昨天试验了下,那样有些不准,所以分两段运行了,具体为什么不准这个我也不是很清楚,对于有防火墙的情况也是适用的,对屏蔽了ICMP包的机器也是适用的,因为他一定还给一个MAC地址给源计算机的,所以请大家放心使用就是了.
第2楼 dosz 发表于 2006-02-17 22:49
中级用户 发帖 188 积分 396 来自 上海
@echo off
@echo Searching share in LAN now...
@for /L %%i IN (1,1,255) do @echo 192.168.0.%%i && @echo 192.168.0.%%i >> share.txt && net view 192.168.0.%%i >> share.txt || @echo 该主机无响应 >> share.txt
@echo finished
@pause
exit
第3楼 220110 发表于 2006-02-18 00:25
荣誉版主 发帖 313 积分 718
to dosz:
我觉得用 net view 不行。因为没安装NetBIOS协议的计算机不会响应 net 的相关命令。
如果可以的话,我想bagpipe 应该会想到。

to bagpipe:
我请问个问题,arp要不要什么协议做基础?源计算机要启动什么服务吗?我曾调试一台网络摄像机,按说明书,先在服务器用arp 命令把一个IP关联绑定网络摄像机的MAC地址,再用IE登录它。然而,反复尝试均不成功。
第4楼 3742668 发表于 2006-02-18 07:11
荣誉版主 发帖 718 积分 2,013
@echo off
set /a ip0 = "192"
set /a ip1 = "168"
set /a ip2 = "1"
set /a ip3 = "1"

:ping
ping %ip0%.%ip1%.%ip2%.%ip3% -n 1 -w 10 | find "TTL" >>ip.txt
set /a ip3 = %ip3% + "1"
if %ip3% == 255 (set /a ip2 = "%ip2%" + "1") & (set /a ip3 = "1")
if not %ip2% == 255 goto ping

ping 命令后面加上-vw和-n参数会使效率提高不止一点点。。。。
另外用set命令的话扩展性就好得多,不光可以用来扫描局域网,甚至。。。。
ps:上面的find "TTL"完全是多余的,可以用&&来判断是否ping通。

[ Last edited by 3742668 on 2006-2-18 at 07:16 ]
第5楼 3742668 发表于 2006-02-18 07:12
荣誉版主 发帖 718 积分 2,013
上面那个是我以前用来扫描IP的东东,不过后来又改了,专门用来扫描宽带猫的。
ping命令实战演习

1.检测网络状态
有时候局域网中主机故障,导致下面的电脑不能上网。而故障又是暂时性的,说不定什么时候网络就恢复了,在掉线的这段时间去玩单机游戏吧又怕网络通了而不知道,老是从游戏中切换出来检查网络又觉得麻烦。这时候ping命令就可以派上用场了,打开记事本输入:

@echo off
:check
ping sz6.tencent.com -n 1 >nul
if errorlevel 1 goto check
echo wscript.echo "网络已连接!" > tmp.vbs
start tmp.vbs
echo
rem 上面一句echo后面有十个特殊字符
echo y | del tmp.vbs

完毕后保存为 网络检测.bat 并双击运行,然后就可以放心地去玩游戏了,如果网络连接上后响十声警报并有消息提示网络已通。第七行echo后面的" "字符可以通过以下方法得到:在命令行窗口输入echo ALT+7 > 字符.txt,注意ALT+7表示按下ALT再按下小键盘上的数字7,然后打开“字符.txt”复制粘贴。如果系统为XP的话可简化为:
@echo off
ping sz6.tencent.com -n 1 && echo && msg %username% /time:10 "网络已通!" && exit
%0

2.给局域网中所有的计算机发送消息
打开记事本输入:
@echo off
set /a ip0 = 192
set /a ip1 = 168
set /a ip2 = 1
set /a ip3 = 1

:ping
ping %ip0%.%ip1%.%ip2%.%ip3% -n 1 -w 1 | find "TTL" >>tmp1.txt
set /a ip3 = %ip3% + 1
if not %ip3% == 255 goto ping

for /f "eol=: tokens=3" %%i in (tmp1.txt) do echo %%i >>tmp2.txt
if exist ip.txt echo y | del ip.txt
for /f "delims=:" %%i in (tmp2.txt) do echo %%i >>ip.txt
for /f %%i in (ip.txt) do net send %%i "你好!"

echo y | del tmp1.txt & echo y | del tmp2.txt

完毕后保存为 网络消息.bat 并双击运行。运行完毕后会产生一个名为ip.txt的记录文件,里面记录了所发送过消息的电脑的IP地址。

3.入侵
还是先打开记事本,输入:
@echo off
set /a ip0 = 58
set /a ip1 = 52
set /a ip2 = 110
set /a ip3 = 1
if exist ip.txt echo y | del ip.txt
if exist linux.txt echo y | del linux.txt
if exist windows.txt echo y | del windows.txt
:ping
ping %ip0%.%ip1%.%ip2%.%ip3% -n 1 -w 10 | find "TTL" >>ip.txt
set /a ip3 = %ip3% + 1
if %ip3% == 255 (set /a ip2 = %ip2% + 1) & (set /a ip3 = 1)
if not %ip2% == 255 goto ping
type ip.txt | find "TTL=6" >>linux.txt
type ip.txt | find "TTL=12" >>windows.txt

保存为 扫描.bat 后双击运行将会扫描从59.36.180.1到59.36.255.255之间的IP地址并根据系统的不同来保存为不同的IP(根据不同情况可以修改为想扫描的IP段)。我们知道,windows NT,2000,XP系统的TTL值一般为128,unix为255,win95/98为32,linux为64,另外基本上宽带猫的系统都为linux,所以linux中的IP大多数为打开了路由功能的猫的IP,如果没有更改出厂密码的话我们就可以登陆到猫上去找到他的上网帐号。对于windows.txt中的IP我们可以通过一些工具来进行入侵。
第6楼 dosz 发表于 2006-02-18 09:58
中级用户 发帖 188 积分 396 来自 上海
请教ERRORLEVEL错误返回代号
请教 3742668:

===============执行.bat===============
@echo off
copy C:\BOOT.INI>nul
if errorlevel 1 echo 执行失败
if errorlevel -1 echo 执行成功
if errorlevel -1 echo 被用户中断等
pause
exit
===============================
请教 ERRORLEVEL错误返回代号
如执行成功,执行失败,或被用户中断等

[ Last edited by dosz on 2006-2-18 at 10:02 ]
第7楼 dosz 发表于 2006-02-18 10:51
中级用户 发帖 188 积分 396 来自 上海
是否可把以上文件添加注解

以下两句有什么不同
if exist ip.txt echo y | del ip.txt
if exist ip.txt del ip.txt
第8楼 bagpipe 发表于 2006-02-18 17:29
银牌会员 发帖 425 积分 1,144 来自 北京
4楼兄弟的方法好象没有多大起色啊?因为你用find命令来试探TTL生存值,试问如果对方有防火墙之类的软件,我想是PING不通的,所以也不能达到判断对方在线的目的,220110兄弟,好久没联系了,怪想你的,ARP也就是地址解析协议,只要安装了普通的TCP/IP协议我想问题就应该不是很大,你说到的网络摄象机我没有玩过,不过我想一定有网线接口,而且还要有一台主机装上相应的控制软件来实现的,如果是通过WEB界面来管理的,那么你看看他的访问端口之类的,如果不成,请在Q里跟我说明下情况,我们在来讨论,OK???^-^
第9楼 3742668 发表于 2006-02-18 19:41
荣誉版主 发帖 718 积分 2,013
呵呵,我是探测宽带猫的,而且是可以入侵的猫
这样的猫一般都没有屏蔽ICMP协议的
如果对方有这个意识的话我相信更应该是改端口,不会简单地屏蔽这个协议而已,况且对方安全意识高的话我入侵的成功几率也不大,所以可以选择跳过,毕竟在网上一会可以扫一大片可以入侵的猫出来。。。
楼上的兄弟可能是没有理解我这个东东的用途,所以有异议,呵呵。。。。
ps:如果你认为我的说法比较牵强的话我建议用另外一个命令:pathping,它也可以指定时间间隔以及解析对方主机名等等。。。。
6楼的朋友:对于errorlevel建议自己用CMD下的echo %errorlevel%来了解,这样才会有提高。。
7楼的朋友:
if exist ip.txt echo y | del ip.txt rem如果存在ip.txt就删除它,避免上次扫描的结果和这次的混在一起了,下同。echo y只是习惯,用于向del命令发送一个y
if exist ip.txt del ip.txt
初次来到这个论坛,没想到这里有这么多喜欢DOS的朋友饿。。。

[ Last edited by 3742668 on 2006-2-18 at 19:48 ]
第10楼 electronixtar 发表于 2006-03-01 14:29
铂金会员 发帖 2,672 积分 7,493
巨强
第11楼 #four# 发表于 2006-03-01 14:33
中级用户 发帖 34 积分 209
for 命令的/F参数是什么意思???????
能不能详细说一说.
非常感谢!!!
第12楼 yayun 发表于 2006-03-12 10:39
新手上路 发帖 6 积分 2
学到东西了
第13楼 doscc 发表于 2006-03-27 13:33
中级用户 发帖 93 积分 256 来自 广东
顶顶
第14楼 Kinglion 发表于 2006-03-27 16:33
铂金会员 发帖 1,924 积分 5,798 来自 金獅電腦軟體工作室
如果为了方便,可以使用 LanSee ,很实用。
第15楼 kkworms 发表于 2006-04-01 03:11
新手上路 发帖 1 积分 2
都是强人呀,受用了
1 2  下一页
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023