创build一个batch file,从networking接口名称中获取一个IP地址

我有超过2个networking接口的服务器。 即。 小学,中学,小学等

使用以下几行我从最后一个NIC获取IP:

for /f "tokens=2 delims=:" %%a in ('ipconfig ^| find "IP" ^| find "Address" ^| find /v "v6"') do ( set IPAddr=%%a ) echo=%IPAddr% 

我需要从特定的网卡名称findIP地址。 “BEN”

我也试过这个:

 @echo on setlocal ENABLEEXTENSIONS setlocal EnableDelayedExpansion set result=false for /f "tokens=2 delims=:" %%a in ('ipconfig ^| "BEN.NIC" ^| find "IP Address"') do ( set IPAddr=%%a ) echo %IPAddr% 

它不起作用。

下一个脚本应该工作:

 @ECHO OFF >NUL SETLOCAL enableextensions disabledelayedexpansion set "nicFunName=wiredEthernet" for /F "usebackq tokens=*" %%G in ( `wmic nic where "NetConnectionID='%nicFunName%'" get index /value^|find "="`) do ( rem echo G %%G for /F "tokens=*" %%H in ("%%G") do ( rem echo H %%H for /F "usebackq tokens=2 delims==" %%I in ( `wmic NICCONFIG where %%H get IPAddress /value` ) do ( rem echo I %%I for /F "tokens=1,2 delims={,}" %%J in ("%%I") do ( echo IPv4=%%J IPv6=%%K rem or without double quotes: echo IPv4=%%~J IPv6=%%~K ) ) ) ) ENDLOCAL goto :eof 

for循环在哪里

  • %%G来检索Index=0格式的NIC索引,适用于下一个wmic查询where子句的条件
  • %%Hwmic输出中删除superabundand和有害的回车( 0x0D
  • %%I{"<ipv4>","<ipv6>"}格式通过索引检索IPAddress
  • %%J分割以前的输出

你可以添加一个最外层的循环,如下所示:

 for %%m in ( "Primary.nic" "BEN.nic" "HB.nic" ) do ( rem all for... code here with rem where "NetConnectionID='%%~m'" rem or call a subroutine or call a batch etc. )