创建批处理文件以从网络接口名称获取IP地址

时间:2015-04-01 19:52:23

标签: windows batch-file command-line

我的服务器有超过2个网络接口。 即。原发性,BEN.nic,HB.nic等

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

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

我需要从特定的NIC名称中找到IP地址,即。 “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%

它不起作用。

1 个答案:

答案 0 :(得分:1)

下一个脚本应该可以工作:

@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循环

的位置
  • %%GIndex=0格式检索适用于下一个wmic查询where子句条件的网卡索引
  • %%H0x0D输出
  • 中删除超级承销和有害回车(wmic
  • %%IIPAddress格式
  • 的索引检索{"<ipv4>","<ipv6>"}
  • %%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.
)