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

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

本帖最后由 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个字符)
1

评分人数

    • CrLf: 感谢给帖子标题标注[已解决]字样PB + 2

如果计算机名获取不到,就继续获取ip,并保存到txt

TOP

  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
复制代码
这个代码,可以解决问题,多谢了。

TOP

返回列表