[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[系统相关] 求助批处理显示局域网内的 计算机名称 和对应的 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

回复 8# internet20


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

TOP

回复 8# internet20


    可以啊 怎么了

TOP

请问“闻启学”,你的net view能用?

TOP

多谢楼上各位指导

TOP

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

Computer Browser,Workstation,Server

其中在启动Computer Browser之前,要先启用Workstation服务。

TOP

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

评分人数

如无特别说明,代码测试环境均为 XP SP3

TOP

回复 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
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 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
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 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
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表