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

[网络工具] 批处理版局域网空闲IP查询

[复制链接]
发表于 2008-1-7 22:11:26 | 显示全部楼层 |阅读模式
  1. ::原理介绍:先通过net view命令获取局域网的所有计算机
  2. ::(无法查询没有安装netbios协议的计算机);再ping这些计算机(ping不通也没关系)
  3. ::然后查arp缓存。
  4. ::code by youxi01@bbs.bathome.net 2008-1-7
  5. @echo off &setlocal enabledelayedexpansion
  6. title 局域网空闲IP查询@bbs.bathome.net
  7. Rem '/*========获取本机的IP地址(局域网)=========*/
  8. echo 正在获取本机的IP地址,请稍等...
  9. for /f "tokens=3 skip=2 delims=: " %%i in ('nbtstat -n') do (
  10.      set "IP_addr=%%i"
  11.      set IP_addr=!IP_addr:~1,-1!
  12.      echo 本机IP为:!IP_addr!
  13.      goto :next
  14. )

  15. :next
  16. for /f "delims=. tokens=1,2,3,4" %%i in ("%IP_addr%") do set IP_fd=%%i.%%j.%%k
  17. Rem '/*========获取计算机名============*/
  18. echo.&echo 正在获取局域网内计算机名,请稍等...
  19. echo 处于网段 %IP_fd%.* 的计算机有:&echo.
  20. for /f "delims=" %%i in ('net view') do (
  21.      set "var=%%i"
  22.      rem ----------获取计算机名称------------
  23.      if "!var:~0,2!"=="\" (
  24.           set "var=!var:~2!"
  25.           echo !var!
  26.           Rem ----------ping计算机名--------------
  27.           ping -n 1 !var!>nul
  28.     )
  29. )
  30. echo.&echo -----------------------------
  31. Rem '/*========提取arp缓存=========*/
  32. echo.&echo 正在获取局域网内计算机IP,请稍等...& echo.
  33. for /f "skip=3 tokens=1,* delims= " %%i in ('arp -a') do echo IP: %%i 已经使用

  34. echo.&echo -----------------------------
  35. echo 程序完成,谢谢使用!
  36. pause>nul
复制代码
发表于 2008-1-18 15:06:17 | 显示全部楼层
不怎么准吧  我怎么只扫描到2台???
发表于 2008-6-10 05:13:39 | 显示全部楼层
恩恩。。。只扫到了几台而已
发表于 2008-12-27 11:02:57 | 显示全部楼层
我用的是nbtscan
发表于 2009-12-26 10:57:51 | 显示全部楼层
不错哦
学习了 谢谢楼主的分享
发表于 2010-9-16 11:01:58 | 显示全部楼层
code/echo  谢谢 分享了/code
发表于 2010-10-13 11:10:29 | 显示全部楼层
不错,比我以前写的那个效率要高。。。
发表于 2010-10-15 14:27:15 | 显示全部楼层
只扫描到几台,我旁边有台电脑开着就没扫描到!
发表于 2011-3-31 22:32:48 | 显示全部楼层
不错,蛮好用的.谢谢了
发表于 2011-3-31 23:01:37 | 显示全部楼层
本帖最后由 mxxcgzxxx 于 2011-3-31 23:07 编辑

用我的试试,比较短小!还会写入 1.txt  内,以备查看.
经学校测试效果极佳!
不在一个工作组下的可以显示,
不在一个IP段下的不能显示.
没开机的不能显示

  1. @echo off
  2. @echo 中小网络在线IP分布情况>1.txt

  3. setlocal ENABLEDELAYEDEXPANSION

  4. @FOR /F "usebackq delims=, " %%J IN (`net view /domain ^|find "命令執行成功" /v ^|find "The command completed successfully." /v ^|find "命令成功完成" /v ^|find "--" /v ^|find "Domain" /v ^|find "" /v ^|find "コマンドは正常に終了しました" /v /i`) do (

  5. @echo =====domain:%%J========>>1.txt
  6. @echo =====domain:%%J========

  7. @FOR /F "usebackq eol=; delims=, " %%i in (`net view /domain:%%J ^|findstr "\"`) DO (

  8. @FOR /F "usebackq eol=; tokens=1,2,3* delims=\" %%a in (`echo %%i`) do (

  9. @FOR /F "tokens=1,2,3,4* usebackq delims=: " %%K IN (`@ping -a -n 1 -w 100 %%a ^|findstr "Pinging"`) do (

  10. @echo \\%%L %%M>>1.txt
  11. @echo \\%%L %%M

  12. )

  13. )

  14. )

  15. )

  16. echo %0
  17. pause "按任意键退出"

复制代码
发表于 2011-4-19 20:33:45 | 显示全部楼层
IP取的不是很准哦
发表于 2011-4-22 16:53:18 | 显示全部楼层
学习一下,,,,,,,,,,,,,,,,
发表于 2011-7-8 09:32:54 | 显示全部楼层
本帖最后由 ming668 于 2011-7-8 09:37 编辑
用我的试试,比较短小!还会写入 1.txt  内,以备查看.
经学校测试效果极佳!
不在一个工作组下的可以显示,
不在一个IP段下的不能显示.
没开机的不能显示
@echo off
@echo 中小网络在线IP分布情况>1.txt

setloc ...
mxxcgzxxx 发表于 2011-3-31 23:01


能否帮忙写个只要计算机名就可以的,不要其它的参数。
发表于 2012-9-13 20:57:17 | 显示全部楼层
人才~~~~~~~~~~~
发表于 2012-9-28 08:56:28 | 显示全部楼层
回复 1# youxi01


    使用tokens=3 skip=2 delims=:,只能显示第一个启用的网卡地址,如果我有无线连接,就会显示无线连接的地址并在无线连接的网段中寻找了

这样不太好吧,希望能修正一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-16 21:38 , Processed in 0.024051 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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