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

[系统相关] 【已解决】批处理IP地址获取的变量问题

由于电脑上的网卡较多,每次ipconfig /all会显示很长的信息,我想查看指定网卡的相关信息,所以查询了网站,找了一个代码,我改了一下,单独执行是可以的。但是组合在一起就不行了,不知道是那里弄错了,还望大神帮忙一下。谢谢!
问题2:变量%AM%,也就是辅助DNS这一行,运行不成功,因为没有:,这句应该怎么改一下。

代码如下:
  1. @echo off&setlocal enabledelayedexpansion
  2. :start
  3. for /f "tokens=1,2 delims=:" %%a in ('ipconfig /all') do (
  4.      if "%%a" equ "以太网适配器 2.5G" set "flag=a"
  5.      if defined flag set /a n+=1
  6.      if !n! equ 3 set "AA=%%b"
  7. )
  8. for /f "tokens=1,2 delims=:" %%a in ('ipconfig /all') do (
  9.      if "%%a" equ "以太网适配器 2.5G" set "flag=a"
  10.      if defined flag set /a n+=1
  11.      if !n! equ 4 set "AB=%%b"
  12. )
  13. for /f "tokens=1,2 delims=:" %%a in ('ipconfig /all') do (
  14.      if "%%a" equ "以太网适配器 2.5G" set "flag=a"
  15.      if defined flag set /a n+=1
  16.      if !n! equ 5 set "AC=%%b"
  17. )
  18. for /f "tokens=1,2 delims=:" %%a in ('ipconfig /all') do (
  19.      if "%%a" equ "以太网适配器 2.5G" set "flag=a"
  20.      if defined flag set /a n+=1
  21.      if !n! equ 6 set "AD=%%b"
  22. )
  23. for /f "tokens=1,2 delims=:" %%a in ('ipconfig /all') do (
  24.      if "%%a" equ "以太网适配器 2.5G" set "flag=a"
  25.      if defined flag set /a n+=1
  26.      if !n! equ 7 set "AE=%%b"
  27. )
  28. for /f "tokens=1,2 delims=:" %%a in ('ipconfig /all') do (
  29.      if "%%a" equ "以太网适配器 2.5G" set "flag=a"
  30.      if defined flag set /a n+=1
  31.      if !n! equ 8 set "AF=%%b"
  32. )
  33. for /f "tokens=1,2 delims=:" %%a in ('ipconfig /all') do (
  34.      if "%%a" equ "以太网适配器 2.5G" set "flag=a"
  35.      if defined flag set /a n+=1
  36.      if !n! equ 9 set "AH=%%b"
  37. )
  38. for /f "tokens=1,2 delims=:" %%a in ('ipconfig /all') do (
  39.      if "%%a" equ "以太网适配器 2.5G" set "flag=a"
  40.      if defined flag set /a n+=1
  41.      if !n! equ 10 set "AI=%%b"
  42. )
  43. for /f "tokens=1,2 delims=:" %%a in ('ipconfig /all') do (
  44.      if "%%a" equ "以太网适配器 2.5G" set "flag=a"
  45.      if defined flag set /a n+=1
  46.      if !n! equ 11 set "AJ=%%b"
  47. )
  48. for /f "tokens=1,2 delims=:" %%a in ('ipconfig /all') do (
  49.      if "%%a" equ "以太网适配器 2.5G" set "flag=a"
  50.      if defined flag set /a n+=1
  51.      if !n! equ 12 set "AK=%%b"
  52. )
  53. for /f "tokens=1,2 delims=:" %%a in ('ipconfig /all') do (
  54.      if "%%a" equ "以太网适配器 2.5G" set "flag=a"
  55.      if defined flag set /a n+=1
  56.      if !n! equ 13 set "AL=%%b"
  57. )
  58. for /f "tokens=1,2 delims=:" %%a in ('ipconfig /all') do (
  59.      if "%%a" equ "以太网适配器 2.5G" set "flag=a"
  60.      if defined flag set /a n+=1
  61.      if !n! equ 13 set "AM=%%b"
  62. )
  63. for /f "tokens=1,2 delims=:" %%a in ('ipconfig /all') do (
  64.      if "%%a" equ "以太网适配器 2.5G" set "flag=a"
  65.      if defined flag set /a n+=1
  66.      if !n! equ 13 set "AN=%%b"
  67. )
  68. echo.
  69. echo 以太网适配器 2.5G:
  70. echo   连接特定的 DNS 后缀 . . . . . . . :
  71. echo   描述. . . . . . . . . . . . . . . : %AA%
  72. echo   物理地址. . . . . . . . . . . . . : %AB%
  73. echo   DHCP 已启用 . . . . . . . . . . . : %AC%
  74. echo   自动配置已启用. . . . . . . . . . : %AE%
  75. echo   IPv4 地址 . . . . . . . . . . . . : %AF%
  76. echo   子网掩码  . . . . . . . . . . . . : %AH%
  77. echo   IPv4 地址 . . . . . . . . . . . . : %AI%
  78. echo   子网掩码  . . . . . . . . . . . . : %AJ%
  79. echo   默认网关. . . . . . . . . . . . . :%AK%
  80. echo   DNS 服务器  . . . . . . . . . . . : %AL%
  81. echo                                       %AM%
  82. echo   TCPIP 上的 NetBIOS  . . . . . . . : %AN%
  83. echo.
  84. echo.
  85. echo.
  86. TIMEOUT /T 20 /NOBREAK
  87. Goto start
复制代码
最终的显示效果如下:

以太网适配器 2.5G:

   连接特定的 DNS 后缀 . . . . . . . :
   描述. . . . . . . . . . . . . . . : Realtek USB 2.5GbE Family Controller
   物理地址. . . . . . . . . . . . . : 00-E1-4C-18-08-24
   DHCP 已启用 . . . . . . . . . . . : 否
   自动配置已启用. . . . . . . . . . : 是
   IPv4 地址 . . . . . . . . . . . . : 192.168.1.3(首选)
   子网掩码  . . . . . . . . . . . . : 255.255.255.0
   IPv4 地址 . . . . . . . . . . . . : 192.168.5.52(首选)
   子网掩码  . . . . . . . . . . . . : 255.255.255.0
   默认网关. . . . . . . . . . . . . : 192.168.1.1
   DNS 服务器  . . . . . . . . . . . : 202.96.134.33
                                       192.168.1.1
   TCPIP 上的 NetBIOS  . . . . . . . : 已启用

本帖最后由 thp2008 于 2022-2-15 20:52 编辑

我自已研究了半天,终于解决了,原来要这样写才可以
  1. @echo off&setlocal enabledelayedexpansion
  2. :start
  3. for /f "tokens=1,2 delims=:" %%a in ('ipconfig /all') do (
  4.      if "%%a" equ "以太网适配器 2.5G" set "flag=a"
  5.      if defined flag set /a n+=1
  6.      if !n! equ 3 set "AA=%%b"
  7.      if !n! equ 4 set "AB=%%b"
  8.      if !n! equ 5 set "AC=%%b"
  9.      if !n! equ 6 set "AD=%%b"
  10.      if !n! equ 7 set "AE=%%b"
  11.      if !n! equ 8 set "AF=%%b"
  12.      if !n! equ 9 set "AH=%%b"
  13.      if !n! equ 10 set "AI=%%b"
  14.      if !n! equ 11 set "AJ=%%b"
  15.      if !n! equ 12 set "AK=%%b"
  16.      if !n! equ 13 set "AL=%%b"
  17.      if !n! equ 14 set "AM=%%b"
  18.      if !n! equ 15 set "AN=%%b"
  19. )
  20. echo.
  21. echo 以太网适配器 2.5G:
  22. echo   连接特定的 DNS 后缀 . . . . . . . :
  23. echo   描述. . . . . . . . . . . . . . . : %AA%
  24. echo   物理地址. . . . . . . . . . . . . : %AB%
  25. echo   DHCP 已启用 . . . . . . . . . . . : %AC%
  26. echo   自动配置已启用. . . . . . . . . . : %AE%
  27. echo   IPv4 地址 . . . . . . . . . . . . : %AF%
  28. echo   子网掩码  . . . . . . . . . . . . : %AH%
  29. echo   IPv4 地址 . . . . . . . . . . . . : %AI%
  30. echo   子网掩码  . . . . . . . . . . . . : %AJ%
  31. echo   默认网关. . . . . . . . . . . . . :%AK%
  32. echo   DNS 服务器  . . . . . . . . . . . : %AL%
  33. echo                                       %AM%
  34. echo   TCPIP 上的 NetBIOS  . . . . . . . : %AN%
  35. echo.
  36. echo.
  37. echo.
  38. TIMEOUT /T 20 /NOBREAK
  39. Goto start
复制代码
但就是备用DNS无法显示出来,不知道需要怎么样表述。

TOP

本帖最后由 thp2008 于 2022-2-15 19:23 编辑

回复 2# yakeyun


    这个方式,跟ipconfig /all的区别不大,列出了全部的网卡信息,比如,我有8个网卡,它全部列出来了,我只需要列出,其中,指定的一个网卡。感谢!
我上面的批处理,才是我想要的,只是,其中的语句方式,可能有点小问题,所以需要帮忙修改一下。因为我单独获取一行是没有问题的,我测试过。估计是那里变量设的不对,或者是要清零等。我看不懂而已。


列如:
  1. @echo off&setlocal enabledelayedexpansion
  2. :start
  3. for /f "tokens=1,2 delims=:" %%a in ('ipconfig /all') do (
  4.      if "%%a" equ "以太网适配器 2.5G" set "flag=a"
  5.      if defined flag set /a n+=1
  6.      if !n! equ 3 set "AA=%%b"
  7. )
  8. echo.
  9. echo 以太网适配器 2.5G:
  10. echo   连接特定的 DNS 后缀 . . . . . . . :
  11. echo   描述. . . . . . . . . . . . . . . : %AA%
  12. echo   物理地址. . . . . . . . . . . . . : %AB%
  13. echo   DHCP 已启用 . . . . . . . . . . . : %AC%
  14. echo   自动配置已启用. . . . . . . . . . : %AE%
  15. echo   IPv4 地址 . . . . . . . . . . . . : %AF%
  16. echo   子网掩码  . . . . . . . . . . . . : %AH%
  17. echo   IPv4 地址 . . . . . . . . . . . . : %AI%
  18. echo   子网掩码  . . . . . . . . . . . . : %AJ%
  19. echo   默认网关. . . . . . . . . . . . . :%AK%
  20. echo   DNS 服务器  . . . . . . . . . . . : %AL%
  21. echo                                       %AM%
  22. echo   TCPIP 上的 NetBIOS  . . . . . . . : %AN%
  23. echo.
  24. echo.
  25. echo.
  26. TIMEOUT /T 20 /NOBREAK
  27. Goto start
复制代码
我单独,这样运行,%AA%的变量,是可以正确获得和显示的。

但是我加的第二组,第三组,就不能正确获得了。但是每一组,如果单独使用是可以的。就是合在一起不行,所以,我不知道是什么原因。
  1. @echo off&setlocal enabledelayedexpansion
  2. :start
  3. for /f "tokens=1,2 delims=:" %%a in ('ipconfig /all') do (
  4.      if "%%a" equ "以太网适配器 2.5G" set "flag=a"
  5.      if defined flag set /a n+=1
  6.      if !n! equ 3 set "AA=%%b"
  7. )
  8. for /f "tokens=1,2 delims=:" %%a in ('ipconfig /all') do (
  9.      if "%%a" equ "以太网适配器 2.5G" set "flag=a"
  10.      if defined flag set /a n+=1
  11.      if !n! equ 4 set "AB=%%b"
  12. )
  13. for /f "tokens=1,2 delims=:" %%a in ('ipconfig /all') do (
  14.      if "%%a" equ "以太网适配器 2.5G" set "flag=a"
  15.      if defined flag set /a n+=1
  16.      if !n! equ 5 set "AC=%%b"
  17. )
  18. echo.
  19. echo 以太网适配器 2.5G:
  20. echo   连接特定的 DNS 后缀 . . . . . . . :
  21. echo   描述. . . . . . . . . . . . . . . : %AA%
  22. echo   物理地址. . . . . . . . . . . . . : %AB%
  23. echo   DHCP 已启用 . . . . . . . . . . . : %AC%
  24. echo   自动配置已启用. . . . . . . . . . : %AE%
  25. echo   IPv4 地址 . . . . . . . . . . . . : %AF%
  26. echo   子网掩码  . . . . . . . . . . . . : %AH%
  27. echo   IPv4 地址 . . . . . . . . . . . . : %AI%
  28. echo   子网掩码  . . . . . . . . . . . . : %AJ%
  29. echo   默认网关. . . . . . . . . . . . . :%AK%
  30. echo   DNS 服务器  . . . . . . . . . . . : %AL%
  31. echo                                       %AM%
  32. echo   TCPIP 上的 NetBIOS  . . . . . . . : %AN%
  33. echo.
  34. echo.
  35. echo.
  36. TIMEOUT /T 20 /NOBREAK
  37. Goto start
复制代码

TOP

回复 1# thp2008


@echo off
for /f "skip=8 tokens=* delims=," %%a in ('echo ^|ipconfig /all') do echo %%a
pause>nul

TOP

返回列表