[英]create a batch file to get a ip address from a network interface name
我的服務器具有2個以上的網絡接口。 即。 Primary.nic,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地址)中找到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%
沒用
下一個腳本應該工作:
@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
輸出中刪除超豐度和有害的回車符( 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.
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.