标题: [系统相关] 【已解决】批处理IP地址获取的变量问题 [打印本页]
作者: thp2008 时间: 2022-2-15 14:38 标题: 【已解决】批处理IP地址获取的变量问题
由于电脑上的网卡较多,每次ipconfig /all会显示很长的信息,我想查看指定网卡的相关信息,所以查询了网站,找了一个代码,我改了一下,单独执行是可以的。但是组合在一起就不行了,不知道是那里弄错了,还望大神帮忙一下。谢谢!
问题2:变量%AM%,也就是辅助DNS这一行,运行不成功,因为没有:,这句应该怎么改一下。
代码如下:- @echo off&setlocal enabledelayedexpansion
- :start
- for /f "tokens=1,2 delims=:" %%a in ('ipconfig /all') do (
- if "%%a" equ "以太网适配器 2.5G" set "flag=a"
- if defined flag set /a n+=1
- if !n! equ 3 set "AA=%%b"
- )
-
- for /f "tokens=1,2 delims=:" %%a in ('ipconfig /all') do (
- if "%%a" equ "以太网适配器 2.5G" set "flag=a"
- if defined flag set /a n+=1
- if !n! equ 4 set "AB=%%b"
- )
-
- for /f "tokens=1,2 delims=:" %%a in ('ipconfig /all') do (
- if "%%a" equ "以太网适配器 2.5G" set "flag=a"
- if defined flag set /a n+=1
- if !n! equ 5 set "AC=%%b"
- )
-
- for /f "tokens=1,2 delims=:" %%a in ('ipconfig /all') do (
- if "%%a" equ "以太网适配器 2.5G" set "flag=a"
- if defined flag set /a n+=1
- if !n! equ 6 set "AD=%%b"
- )
-
- for /f "tokens=1,2 delims=:" %%a in ('ipconfig /all') do (
- if "%%a" equ "以太网适配器 2.5G" set "flag=a"
- if defined flag set /a n+=1
- if !n! equ 7 set "AE=%%b"
- )
-
- for /f "tokens=1,2 delims=:" %%a in ('ipconfig /all') do (
- if "%%a" equ "以太网适配器 2.5G" set "flag=a"
- if defined flag set /a n+=1
- if !n! equ 8 set "AF=%%b"
- )
-
- for /f "tokens=1,2 delims=:" %%a in ('ipconfig /all') do (
- if "%%a" equ "以太网适配器 2.5G" set "flag=a"
- if defined flag set /a n+=1
- if !n! equ 9 set "AH=%%b"
- )
-
- for /f "tokens=1,2 delims=:" %%a in ('ipconfig /all') do (
- if "%%a" equ "以太网适配器 2.5G" set "flag=a"
- if defined flag set /a n+=1
- if !n! equ 10 set "AI=%%b"
- )
-
- for /f "tokens=1,2 delims=:" %%a in ('ipconfig /all') do (
- if "%%a" equ "以太网适配器 2.5G" set "flag=a"
- if defined flag set /a n+=1
- if !n! equ 11 set "AJ=%%b"
- )
-
- for /f "tokens=1,2 delims=:" %%a in ('ipconfig /all') do (
- if "%%a" equ "以太网适配器 2.5G" set "flag=a"
- if defined flag set /a n+=1
- if !n! equ 12 set "AK=%%b"
- )
-
- for /f "tokens=1,2 delims=:" %%a in ('ipconfig /all') do (
- if "%%a" equ "以太网适配器 2.5G" set "flag=a"
- if defined flag set /a n+=1
- if !n! equ 13 set "AL=%%b"
- )
-
- for /f "tokens=1,2 delims=:" %%a in ('ipconfig /all') do (
- if "%%a" equ "以太网适配器 2.5G" set "flag=a"
- if defined flag set /a n+=1
- if !n! equ 13 set "AM=%%b"
- )
-
- for /f "tokens=1,2 delims=:" %%a in ('ipconfig /all') do (
- if "%%a" equ "以太网适配器 2.5G" set "flag=a"
- if defined flag set /a n+=1
- if !n! equ 13 set "AN=%%b"
- )
-
- echo.
- echo 以太网适配器 2.5G:
-
- echo 连接特定的 DNS 后缀 . . . . . . . :
- echo 描述. . . . . . . . . . . . . . . : %AA%
- echo 物理地址. . . . . . . . . . . . . : %AB%
- echo DHCP 已启用 . . . . . . . . . . . : %AC%
- echo 自动配置已启用. . . . . . . . . . : %AE%
- echo IPv4 地址 . . . . . . . . . . . . : %AF%
- echo 子网掩码 . . . . . . . . . . . . : %AH%
- echo IPv4 地址 . . . . . . . . . . . . : %AI%
- echo 子网掩码 . . . . . . . . . . . . : %AJ%
- echo 默认网关. . . . . . . . . . . . . :%AK%
- echo DNS 服务器 . . . . . . . . . . . : %AL%
- echo %AM%
- echo TCPIP 上的 NetBIOS . . . . . . . : %AN%
- echo.
- echo.
- echo.
- TIMEOUT /T 20 /NOBREAK
- 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 . . . . . . . : 已启用
作者: yakeyun 时间: 2022-2-15 18:37
回复 1# thp2008
@echo off
for /f "skip=8 tokens=* delims=," %%a in ('echo ^|ipconfig /all') do echo %%a
pause>nul
作者: thp2008 时间: 2022-2-15 19:18
本帖最后由 thp2008 于 2022-2-15 19:23 编辑
回复 2# yakeyun
这个方式,跟ipconfig /all的区别不大,列出了全部的网卡信息,比如,我有8个网卡,它全部列出来了,我只需要列出,其中,指定的一个网卡。感谢!
我上面的批处理,才是我想要的,只是,其中的语句方式,可能有点小问题,所以需要帮忙修改一下。因为我单独获取一行是没有问题的,我测试过。估计是那里变量设的不对,或者是要清零等。我看不懂而已。
列如:- @echo off&setlocal enabledelayedexpansion
- :start
- for /f "tokens=1,2 delims=:" %%a in ('ipconfig /all') do (
- if "%%a" equ "以太网适配器 2.5G" set "flag=a"
- if defined flag set /a n+=1
- if !n! equ 3 set "AA=%%b"
- )
- echo.
- echo 以太网适配器 2.5G:
-
- echo 连接特定的 DNS 后缀 . . . . . . . :
- echo 描述. . . . . . . . . . . . . . . : %AA%
- echo 物理地址. . . . . . . . . . . . . : %AB%
- echo DHCP 已启用 . . . . . . . . . . . : %AC%
- echo 自动配置已启用. . . . . . . . . . : %AE%
- echo IPv4 地址 . . . . . . . . . . . . : %AF%
- echo 子网掩码 . . . . . . . . . . . . : %AH%
- echo IPv4 地址 . . . . . . . . . . . . : %AI%
- echo 子网掩码 . . . . . . . . . . . . : %AJ%
- echo 默认网关. . . . . . . . . . . . . :%AK%
- echo DNS 服务器 . . . . . . . . . . . : %AL%
- echo %AM%
- echo TCPIP 上的 NetBIOS . . . . . . . : %AN%
- echo.
- echo.
- echo.
- TIMEOUT /T 20 /NOBREAK
- Goto start
复制代码
我单独,这样运行,%AA%的变量,是可以正确获得和显示的。
但是我加的第二组,第三组,就不能正确获得了。但是每一组,如果单独使用是可以的。就是合在一起不行,所以,我不知道是什么原因。- @echo off&setlocal enabledelayedexpansion
- :start
- for /f "tokens=1,2 delims=:" %%a in ('ipconfig /all') do (
- if "%%a" equ "以太网适配器 2.5G" set "flag=a"
- if defined flag set /a n+=1
- if !n! equ 3 set "AA=%%b"
- )
-
- for /f "tokens=1,2 delims=:" %%a in ('ipconfig /all') do (
- if "%%a" equ "以太网适配器 2.5G" set "flag=a"
- if defined flag set /a n+=1
- if !n! equ 4 set "AB=%%b"
- )
-
- for /f "tokens=1,2 delims=:" %%a in ('ipconfig /all') do (
- if "%%a" equ "以太网适配器 2.5G" set "flag=a"
- if defined flag set /a n+=1
- if !n! equ 5 set "AC=%%b"
- )
-
- echo.
- echo 以太网适配器 2.5G:
-
- echo 连接特定的 DNS 后缀 . . . . . . . :
- echo 描述. . . . . . . . . . . . . . . : %AA%
- echo 物理地址. . . . . . . . . . . . . : %AB%
- echo DHCP 已启用 . . . . . . . . . . . : %AC%
- echo 自动配置已启用. . . . . . . . . . : %AE%
- echo IPv4 地址 . . . . . . . . . . . . : %AF%
- echo 子网掩码 . . . . . . . . . . . . : %AH%
- echo IPv4 地址 . . . . . . . . . . . . : %AI%
- echo 子网掩码 . . . . . . . . . . . . : %AJ%
- echo 默认网关. . . . . . . . . . . . . :%AK%
- echo DNS 服务器 . . . . . . . . . . . : %AL%
- echo %AM%
- echo TCPIP 上的 NetBIOS . . . . . . . : %AN%
- echo.
- echo.
- echo.
- TIMEOUT /T 20 /NOBREAK
- Goto start
复制代码
作者: thp2008 时间: 2022-2-15 20:50
本帖最后由 thp2008 于 2022-2-15 20:52 编辑
我自已研究了半天,终于解决了,原来要这样写才可以- @echo off&setlocal enabledelayedexpansion
- :start
- for /f "tokens=1,2 delims=:" %%a in ('ipconfig /all') do (
- if "%%a" equ "以太网适配器 2.5G" set "flag=a"
- if defined flag set /a n+=1
- if !n! equ 3 set "AA=%%b"
- if !n! equ 4 set "AB=%%b"
- if !n! equ 5 set "AC=%%b"
- if !n! equ 6 set "AD=%%b"
- if !n! equ 7 set "AE=%%b"
- if !n! equ 8 set "AF=%%b"
- if !n! equ 9 set "AH=%%b"
- if !n! equ 10 set "AI=%%b"
- if !n! equ 11 set "AJ=%%b"
- if !n! equ 12 set "AK=%%b"
- if !n! equ 13 set "AL=%%b"
- if !n! equ 14 set "AM=%%b"
- if !n! equ 15 set "AN=%%b"
- )
-
- echo.
- echo 以太网适配器 2.5G:
-
- echo 连接特定的 DNS 后缀 . . . . . . . :
- echo 描述. . . . . . . . . . . . . . . : %AA%
- echo 物理地址. . . . . . . . . . . . . : %AB%
- echo DHCP 已启用 . . . . . . . . . . . : %AC%
- echo 自动配置已启用. . . . . . . . . . : %AE%
- echo IPv4 地址 . . . . . . . . . . . . : %AF%
- echo 子网掩码 . . . . . . . . . . . . : %AH%
- echo IPv4 地址 . . . . . . . . . . . . : %AI%
- echo 子网掩码 . . . . . . . . . . . . : %AJ%
- echo 默认网关. . . . . . . . . . . . . :%AK%
- echo DNS 服务器 . . . . . . . . . . . : %AL%
- echo %AM%
- echo TCPIP 上的 NetBIOS . . . . . . . : %AN%
- echo.
- echo.
- echo.
- TIMEOUT /T 20 /NOBREAK
- Goto start
复制代码
但就是备用DNS无法显示出来,不知道需要怎么样表述。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |