Board logo

标题: [系统相关] 求助批处理显示局域网内的 计算机名称 和对应的 IP地址 [打印本页]

作者: 闻启学    时间: 2022-3-31 11:04     标题: 求助批处理显示局域网内的 计算机名称 和对应的 IP地址

求助  目的 是 显示局域网内的 计算机名称 和对应的 IP地址  

在网上有个代码 可以分别找到 计算机名称 和IP地址

但是不是对应显示  我想是对应显示

我想要效果 如下

计算机名称                      IP地址
-------------------------------------------------------------------------



分享网上代码  可以运行的
////////////////////////////////////////////////////////////////////////////////////////////////////
  1. CLS
  2. @ECHO Off
  3. Title 查询局域网内在线电脑IP
  4. :send
  5. @ECHO off&setlocal enabledelayedexpansion
  6. ECHO 正在获取本机的IP地址,请稍等...
  7.   
  8. @echo off
  9. for /f "tokens=4" %%a in ('route print^|findstr 0.0.0.0.*0.0.0.0') do (
  10. set IP=%%a
  11. )
  12. echo %IP%
  13. for /f "delims=. tokens=1,2,3,4" %%i in ("%IP%") do set range=%%i.%%j.%%k
  14. ECHO.&ECHO 正在获取本网段内的其它在线计算机名,请稍等...
  15. ECHO 本网段【%range%.*】内的计算机有:
  16. for /f "delims=" %%i in ('net view') do (
  17. set "var=%%i"
  18. ::查询在线计算机名称
  19. if "!var:~0,2!"=="\\" (
  20. set "var=!var:~2!"
  21. ECHO !var!
  22. ping -n 1 !var!>nul
  23. ))
  24. ECHO.
  25. ECHO 正在获取本网段内的其它在线计算机IP,请稍等...
  26. for /f "skip=3 tokens=1,* delims= " %%i in ('arp -a') do ECHO IP:正在使用 %%i
  27. ECHO.
  28. ECHO 查询完毕,按任意键退出...
  29. pause>nul
  30. ECHO 正在获取局域网内在线电脑IP地址,请稍等...
  31. arp -a
  32. pause
复制代码
///////////////////////////////////////////////////////////////////////

下面是我写的代码  我根据上面修改的 但是不通过
  1. CLS
  2. @ECHO Off
  3. Title 查询局域网内在线电脑IP
  4. :send
  5. @ECHO off&setlocal enabledelayedexpansion
  6. ECHO 正在获取本机的IP地址,请稍等...
  7.   
  8. @echo off
  9. for /f "tokens=4" %%a in ('route print^|findstr 0.0.0.0.*0.0.0.0') do (
  10. set IP=%%a
  11. )
  12. echo %IP%
  13. pause
  14. for /f "delims=. tokens=1,2,3,4" %%i in ("%IP%") do set range=%%i.%%j.%%k
  15. ECHO.&ECHO 正在获取本网段内的其它在线计算机名,请稍等...
  16. ECHO 本网段【%range%.*】内的计算机有:
  17. for /f "delims=" %%i in ('net view') do (
  18. set "var=%%i"
  19. ::查询在线计算机名称  截取字符
  20. if "!var:~0,2!"=="\\" (
  21. set "var=!var:~2!"
  22. ECHO !var!
  23. ECHO ping -n 1 !var!
  24. for /f "delims= tokens=1" %%a in ('ping !var!') do (
  25. ECHO %%a
  26. )
  27. ping -n 1 !var!>nul
  28. ))
  29. :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  30. ::ECHO  %%myip
  31. ::获得ping 内容 第一行  循环获得每个IP第一行内容
  32. pause
复制代码
请高手指点一下  刚接触Bat
作者: Batcher    时间: 2022-3-31 14:04

回复 1# 闻启学
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%i in ('net view') do (
  4.     set "var=%%i"
  5.     REM 查询在线计算机名称
  6.     if "!var:~0,2!"=="\\" (
  7.         set "var=!var:~2!"
  8.         REM 查询某个计算机的IP
  9.         for /f "tokens=2 delims=[]" %%a in ('ping -n 1 "!var!" ^| findstr /i /c:"正在" /c:"Pinging"') do (
  10.             echo !var! %%a
  11.         )
  12.     )
  13. )
  14. pause
复制代码

作者: Batcher    时间: 2022-4-1 10:13

回复 1# 闻启学
  1. @echo off
  2. for /f "delims=\" %%i in ('net view') do (
  3.     echo 正在处理计算机名称 %%i
  4.     for /f "tokens=2 delims=[]" %%a in ('ping -n 1 "%%i" ^| findstr /i /c:"正在" /c:"Pinging"') do (
  5.         echo !var! %%a
  6.     )
  7. )
  8. pause
复制代码

作者: Batcher    时间: 2022-4-1 11:05

回复 1# 闻启学
  1. @echo off
  2. for /f "delims=\ " %%i in ('net view ^| findstr /b /c:"\\"') do (
  3.     echo 正在处理计算机---%%i---
  4.     for /f "tokens=2 delims=[]" %%a in ('ping -n 1 "%%i" ^| findstr /i /c:"正在" /c:"Pinging"') do (
  5.         echo !var! %%a
  6.     )
  7. )
  8. pause
复制代码

作者: cutebe    时间: 2022-4-1 19:08

本帖最后由 cutebe 于 2022-4-1 19:10 编辑
  1. ::扫描IP名MAC.bat::XP/Win7::
  2. ::ping -n 1 -w 99 %ip%/ping -a
  3. ::nbtstat -a %ip%
  4. @echo off
  5. setlocal enableDelayedExpansion
  6. set "ip3=192.168.1"
  7. for /l %%i in (1,1,254)do (
  8. rem echo %%i
  9. call :CheckIPstatus %ip3%.%%i&&call :GetIPNameMAC %ip3%.%%i Name MAC
  10. if !errorlevel! equ 0 echo/[%ip3%.%%i] [!Name!] [!MAC!]
  11. )
  12. pause
  13. goto :eof
  14. ::[完]
  15. ::ping是否通:返回码stat=失败/Lost
  16. :CheckIPstatus
  17. for /f "tokens=3 delims=,," %%p in ('"ping -n 1 -w 99 %1|findstr /i "数据包 Packets""')do (
  18. for /f "tokens=3" %%s in ("%%p")do set "stat=%%s"
  19. )
  20. exit/b %stat%
  21. ::nbtstat查ip对应计算机名、MAC
  22. :GetIPNameMAC IP Name MAC
  23. setlocal
  24. for /f "delims=" %%n in ('"nbtstat -a %1|findstr /ic:"唯一" /c:"UNIQUE" /c:"MAC ""')do (
  25. set "nbt=%%n"
  26. set "nbt=!nbt:<= !"
  27. set "nbt=!nbt:>=!"
  28. if "!nbt:唯一=!!nbt:UNIQUE=!" neq "!nbt!!nbt!" for /f %%m in ("!nbt!")do set "Name=%%m"
  29. if "!nbt:MAC=!" neq "!nbt!" for /f "tokens=4" %%m in ("!nbt!")do set "MAC=%%m"
  30. )
  31. if "%MAC%"=="" (set Bcode=1)else set Bcode=0
  32. endlocal&set %2=%Name%&set %3=%MAC%&exit/b %Bcode%
复制代码

作者: internet20    时间: 2022-4-2 08:06

net view显示服务未启动
网上解决方法不行
Services.msc
让以下这三个命令都启动就OK了

Computer Browser,Workstation,Server

其中在启动Computer Browser之前,要先启用Workstation服务。
作者: 闻启学    时间: 2022-4-2 08:55

多谢楼上各位指导
作者: internet20    时间: 2022-4-2 08:59

请问“闻启学”,你的net view能用?
作者: 闻启学    时间: 2022-4-6 10:44

回复 8# internet20


    可以啊 怎么了
作者: 闻启学    时间: 2022-4-6 10:49

回复 8# internet20


   你看看是不是防火 墙之类的 阻碍 啊




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