找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 32285|回复: 10

[网络连接] [已解决]查找当前在线的IP的批处理如何提高效率?

[复制链接]
发表于 2009-12-16 12:16:15 | 显示全部楼层 |阅读模式
由于最近我师傅太忙了,所以写的代码师傅没时间帮我改进,只好上贴来请各位大侠帮忙改进
  1. @echo off
  2. @echo 当前在线的IP有:>1.txt
  3. for /f "tokens=3-5 delims=.: " %%a in ('ipconfig /all^|findstr /ic:"default gateway"') do (
  4.     for /l %%i in (1,1,255) do (
  5.   ping -n 1 -l 1 %%a.%%b.%%c.%%i && echo %%a.%%b.%%c.%%i>>1.txt
  6. )
  7. )
  8. msg * /w 扫描IP完成,点确定查看当前在线的IP
  9. start 1.txt&goto :eof
复制代码
代码运行正常,问题就是太耗时间了,有没有方法让它查找的速度再快些

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢主动给标题标注[已解决]字样

查看全部评分

发表于 2009-12-16 13:01:57 | 显示全部楼层
关了 PING 的回显, 加了几个参数, PING 完用了 70 多秒
  1. @echo off & mode con cols=85 lines=2 & setlocal enabledelayedexpansion
  2. (echo 扫描起始: !time!>~) & (echo 当前在线的IP有:>>~)
  3. for /f "tokens=3-5 delims=.: " %%a in ('ipconfig /all^|findstr /ic:"default gateway"') do (
  4.   for /l %%i in (1,1,255) do (
  5.     (set /a k=%%i * 100 /255) & (title !k!%%) & (set /a j=%%i %% 3) & if "!j!"=="0" (set /p=^>< nul)
  6.     ping -n 1 -l 1 -w 20 -i 10 -s 1 %%a.%%b.%%c.%%i>nul && echo %%a.%%b.%%c.%%i>>~
  7. )) & (echo 扫描终止: !time!>>~)&(start write ~) & exit
复制代码

[ 本帖最后由 neorobin 于 2009-12-16 13:43 编辑 ]

评分

参与人数 1PB +5 收起 理由
Batcher + 5 乐于助人

查看全部评分

 楼主| 发表于 2009-12-16 14:14:46 | 显示全部楼层
谢谢2楼的代码,效果果然快多了,但最后运行没有通过,提示windows找不到'write'
发表于 2009-12-16 14:17:50 | 显示全部楼层
那就改 notepad
write.exe 是写字板的一个老版本, 常见的是 wordpad.exe
记事本 notepad
上面的加了进度条显示, 标题进度百分数, 会多耗时 1 分钟左右, 我不用任何显示时, 可到 70 多秒, 那些参数再改小的话, 不稳定的网络可能会漏掉 某些活动 IP

[ 本帖最后由 neorobin 于 2009-12-16 14:21 编辑 ]
 楼主| 发表于 2009-12-16 14:23:47 | 显示全部楼层
谢谢楼上的,你的代码有些还不太懂,呵呵,去找找那些参数的作用。
发表于 2009-12-16 14:27:36 | 显示全部楼层
hh %windir%\Help\ntcmds.chm::/ping.htm
http://technet.microsoft.com/zh-cn/library/cc773052(WS.10).aspx
当然也可以看咱们 BATHOME 这里的解释
发表于 2009-12-16 14:30:25 | 显示全部楼层
我除了加了几个 PING 的参数, 在实质上和你的原代码没有区别, 标题和进度条那是无关紧要的, 事实上它们还耗了时间
发表于 2009-12-16 17:45:26 | 显示全部楼层
有个办法,用"多进程"同时扫描..
start /b ping
但是如何解决 ping的返回值是个问题
 楼主| 发表于 2009-12-17 16:02:46 | 显示全部楼层
原帖由 caruko 于 2009-12-16 17:45 发表
有个办法,用"多进程"同时扫描..
start /b ping
但是如何解决 ping的返回值是个问题


看了楼上的贴,再经师傅教导,再贴出扫描效率更高的代码:
  1. @echo off
  2. arp -d
  3. for /f "tokens=3-5 delims=.: " %%a in ('ipconfig /all^|findstr /ic:"default gateway"') do (
  4.     for /l %%d in (1,1,255) do start /b ping /n 1 %%a.%%b.%%c.%%d
  5. )
  6. ping /n 11 127.1>nul
  7. cls&for /f %%a in ('arp -a^|findstr "dynamic"') do echo %%a
  8. pause>nul
复制代码

评分

参与人数 1技术 +1 收起 理由
beck1321 + 1

查看全部评分

发表于 2012-5-21 01:34:57 | 显示全部楼层
有了输出在线的IP,那么不在线的IP怎么输出到文本中呢?我是菜鸟请多包涵!
发表于 2012-9-14 23:52:34 | 显示全部楼层
回复 10# aove


    我也想问这个问题,如何让9楼的代码运行后 显示1-255内剩余的ip呢(即显示ping不通的)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 14:17 , Processed in 0.021050 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表