我有超过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
子句的条件 %%H
从wmic
输出中删除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. )