Board logo

标题: [网络连接] 批处理如何获取局域网在线主机IP和主机名? [打印本页]

作者: TAO醉    时间: 2014-3-6 11:05     标题: 批处理如何获取局域网在线主机IP和主机名?

本帖最后由 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
复制代码

作者: Batcher    时间: 2014-3-6 13:31

你用这个代码得到的结果是什么样子的?
作者: TAO醉    时间: 2014-3-6 18:09

回复 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。
作者: TAO醉    时间: 2014-3-6 18:11

回复 2# Batcher


我想实现的是,想让主机名和IP一一对应起来。
比如:
主机名         IP
aaa-pc       192.168.1.2
bbb-pc       192.168.1.3
ccc-pc         192.168.1.1
作者: gm8800    时间: 2016-4-20 15:33

好像不行,我的网段是192.168.0-192.168.3,查询出来的在线的192.168.2.#只有几个,但是其实我局域网内192.168.2.#有很多很多在线的
作者: ygqiang    时间: 2016-4-20 21:17

回复 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
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2