簡體   English   中英

創建一個批處理文件以從網絡接口名稱獲取IP地址

[英]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循環在哪里

  • %%GIndex=0格式檢索NIC索引,可用作下一個wmic查詢where子句條件
  • %%Hwmic輸出中刪除超豐度和有害的回車符( 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM