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

[网络连接] 批处理如何获取局域网在线主机IP和主机名?

[复制链接]
发表于 2014-3-6 11:05:54 | 显示全部楼层 |阅读模式
本帖最后由 pcl_test 于 2016-4-20 22:47 编辑

最好显示出列表形式,能够一一对应
例如:
主机名              ip
aaa                 192.168.1.1

请高手指点。
在网上找到一段bat程序,代码如下:
如何修改能实现,我上述的要求啊,菜鸟求教
  1. COLOR 0A
  2. CLS
  3. @ECHO Off
  4. Title 查询局域网内在线电脑IP
  5. :send
  6. @ECHO off&setlocal enabledelayedexpansion

  7. ECHO 正在获取本机的IP地址,请稍等...
  8. for /f "tokens=3 skip=2 delims=: " %%i in ('nbtstat -n') do (
  9. set "IP=%%i"
  10. set IP=!IP:~1,-1!
  11. ECHO 本机IP为:!IP!
  12. goto :next
  13. )

  14. :next
  15. for /f "delims=. tokens=1,2,3,4" %%i in ("%IP%") do set range=%%i.%%j.%%k
  16. ECHO.&ECHO 正在获取本网段内的其它在线计算机名,请稍等...
  17. ECHO 本网段【%range%.*】内的计算机有:
  18. for /f "delims=" %%i in ('net view') do (
  19. set "var=%%i"
  20. ::查询在线计算机名称
  21. if "!var:~0,2!"=="\" (
  22. set "var=!var:~2!"
  23. ECHO !var!
  24. ping -n 1 !var!>nul
  25. ))
  26. ECHO.
  27. ECHO 正在获取本网段内的其它在线计算机IP,请稍等...
  28. for /f "skip=3 tokens=1,* delims= " %%i in ('arp -a') do ECHO IP: %%i 正在使用

  29. ECHO.
  30. ECHO 查询完毕,按任意键退出...
  31. pause>nul
复制代码
发表于 2014-3-6 13:31:03 | 显示全部楼层
你用这个代码得到的结果是什么样子的?
 楼主| 发表于 2014-3-6 18:09:20 | 显示全部楼层
回复 2# Batcher

现在的代码执行的效果如下:
本网段【%range%.*】内的计算机有:
aaa-pc
bbb-pc
ccc-pc

正在获取本网段内的其它在线计算机IP,请稍等...
192.168.1.1
192.168.1.2
192.168.1.3

注意:
这里的主机名和IP不是一一对应的,主机名按照字母排序,IP按照int值排序。比如,bbb-pc的IP可能就是192.168.1.3。
 楼主| 发表于 2014-3-6 18:11:14 | 显示全部楼层
回复 2# Batcher


我想实现的是,想让主机名和IP一一对应起来。
比如:
主机名         IP
aaa-pc       192.168.1.2
bbb-pc       192.168.1.3
ccc-pc         192.168.1.1
发表于 2016-4-20 15:33:32 | 显示全部楼层
好像不行,我的网段是192.168.0-192.168.3,查询出来的在线的192.168.2.#只有几个,但是其实我局域网内192.168.2.#有很多很多在线的
发表于 2016-4-20 21:17:00 | 显示全部楼层
回复 4# TAO醉
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set "aa=        "

  4. cls

  5. ———————————————————————————————————————————————————————————————
  6. cls
  7. for /f "tokens=15 delims= " %%i in ('ipconfig ^| find /i "IP Address"') do (
  8.     set fsip=%%i
  9. )
  10. echo %fsip%

  11. for /f "tokens=1,2,3 delims=." %%i in ("%fsip%") do (
  12.     set a=%%i.%%j.%%k
  13. )

  14. echo %a%

  15. set Gateway=%a%.1

  16. ———————————————————————————————————————————————————————————————
  17. cls

  18. del /f /q 当前在线计算机名-ip.txt >nul 2>nul

  19. for /l %%m in (2,1,100) do (
  20.         ping.exe %a%.%%m -n 1 -w 300 >nul&&Call :getname %a%.%%m
  21. )


  22. ———————————————————————————————————————————————————————————————


  23. start "" "当前在线计算机名-ip.txt"
  24. exit



  25. ———————————————————————————————————————————————————————————————
  26. cls

  27. :getname
  28. set iip=%1
  29. set nname=
  30. for /f "delims=" %%i in ('nbtstat -a !iip! ^| find /i "<00>  UNIQUE"') do (
  31.         echo %%i
  32.         set tii=%%i
  33.         for /f "tokens=1 delims=< " %%j in ("!tii!") do echo %%j!aa!!iip!>>当前在线计算机名-ip.txt
  34. goto :aa
  35.         )
  36. for /f "delims=" %%j in ('nbtstat -a !iip! ^| find /i "Host not found"') do (
  37.         echo %%j
  38.         echo !iip!>>当前在线计算机名-ip.txt
  39. )
  40. :aa
复制代码

评分

参与人数 1技术 +1 收起 理由
CrLf + 1 乐于助人

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 23:00 , Processed in 0.021066 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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