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

[网络连接] [已解决]如何将下面2个获取局域网计算机名与ip的代码,合并为1个bat代码?

[复制链接]
发表于 2011-12-31 22:07:42 | 显示全部楼层 |阅读模式
本帖最后由 ygqiang 于 2012-1-1 00:26 编辑
  1. @echo off

  2. for /f "tokens=15 delims= " %%i in ('ipconfig ^| find /i "IP Address"') do (
  3.     set fsip=%%i
  4. )
  5. echo %fsip%


  6. for /f "tokens=1,2,3 delims=." %%i in ("%fsip%") do (
  7.     set a=%%i.%%j.%%k
  8. )

  9. set Gateway=%a%.1
  10. echo %a%

  11. del /f /q 在线ip.txt

  12. for /l %%m in (1,1,254) do (

  13.         ping.exe %a%.%%m -n 1 -w 300 >nul&&echo %a%.%%m>>在线ip.txt

  14. )

  15. exit
复制代码
上面这个bat代码,试验了2个局域网,都能正常保存在线计算机的ip到txt中。
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set "blank20=                    "
  4. cd.>1.txt
  5. for /f "delims=" %%i in ('net view^|find "\"') do (
  6.     set "var=%%i"
  7.     set "var=!var:~2!"
  8.     CALL :GetIP !var!
  9. )
  10. pause>nul
  11. exit

  12. :GetIP
  13. set hostname=%1
  14. set hnIP=
  15. for /f "tokens=2 delims=[]" %%j in ('ping -4 -n 1 %hostname%') do (
  16.     set hnIP=%%j
  17.     goto :ExitFor
  18. )
  19. :ExitFor
  20. set hostname20=%hostname%%blank20%
  21. set hostname20=%hostname20:~0,20%
  22. echo %hostname20%%hnIP%>>1.txt

  23. exit
复制代码
而上面这个bat代码,在有的局域网结果正常。但有的局域网,只能保存自己的计算机名字与ip到txt中。
并不能保存别的计算机名字与ip。



能否将2个bat代码合并下,实现:

如果不能获取并保存局域网内其他机器的计算机名,就只保存ip到txt文件(计算机名字的位置留空就可以),txt显示格式为:

WJLJFN001                  192.168.9.32
                                    192.168.9.8
                                    192.168.9.1
                                    192.168.9.9
user13f                        192.168.9.44

(最好计算机名字的最前头与ip的最前头,都间隔20个字符)

评分

参与人数 1PB +2 收起 理由
CrLf + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

 楼主| 发表于 2011-12-31 22:13:04 | 显示全部楼层
如果计算机名获取不到,就继续获取ip,并保存到txt
 楼主| 发表于 2012-1-1 00:24:41 | 显示全部楼层
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set "aa=          "
  4. cd.>22.txt
  5. for /f "tokens=15 delims= " %%i in ('ipconfig ^| find /i "IP Address"') do (
  6.     set fsip=%%i
  7. )
  8. echo %fsip%


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


  12. set Gateway=%a%.1
  13. echo %a%

  14. ::del /f /q 在线ip.txt

  15. for /l %%m in (1,1,254) do (
  16.                 echo 查询%a%.%%m
  17.         ping.exe %a%.%%m -n 1 -w 300 >nul&&Call :getname %a%.%%m

  18. )

  19. echo "查询结束"
  20. exit


  21. :getname
  22. set iip=%1
  23. set nname=
  24. echo %iip%
  25. for /f "delims=" %%i in ('nbtstat -a !iip! ^| find /i "<00>  UNIQUE"') do (
  26.         echo %%i
  27.         set tii=%%i
  28.         for /f "tokens=1 delims=< " %%j in ("!tii!") do echo !iip!!aa!%%j>>22.txt
  29. goto :aa
  30.         )
  31. for /f "delims=" %%j in ('nbtstat -a !iip! ^| find /i "Host not found"') do (
  32.         echo %%j
  33.         echo !iip!>>22.txt
  34. )
  35. :aa
复制代码
这个代码,可以解决问题,多谢了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 13:04 , Processed in 0.076935 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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