| ■No95010 (tetris さん) に返信
> ipconfig /all で表示される項目の中で 192.168.1.100(優先)
> この優先が含まれるネットワークアダプターを取得できたらと思っております。
その検索条件には、IP アドレスの部分も含まれていますか?
"(優先)" という文字列だけだと、下記のように
複数のアダプターが列挙される可能性がありそうです。
イーサネット アダプター ローカル エリア接続:
IPv4 アドレス . . . . . . . . . . . .: 10.12.34.56(優先)
イーサネット アダプター vEthernet (Default Switch):
IPv4 アドレス . . . . . . . . . . . .: 172.16.78.90(優先)
リンクローカル IPv6 アドレス. . . . .: 2001:db8::2%22(優先)
> for /f "tokens=1,2,*" %%a in ('ipconfig /all ^| find "イーサネット アダプター"') do (
wmic から得られないかな…と思ったのですが、IPAddress が配列を返すのが難点。
(WQL は配列型に対するクエリをサポートしてない)
wmic NIC where NetEnabled=TRUE get DeviceID, InterfaceIndex, NetConnectionID
wmic NICConfig where IPEnabled=TRUE get InterfaceIndex, IPAddress
配列を処理するために、PowerShell か VBScript を併用するか、
標準出力を文字列として切り出して判断するか…。
> ipconfig /all で表示される項目の中で 192.168.1.100(優先)
IP アドレス固定の問い合わせパターン。
=========
REM @ECHO OFF
SET IP=192.168.1.100
SET PSCMD="Get-CimInstance Win32_NetworkAdapter -Filter NetEnabled=TRUE | select -Property NetConnectionID, @{name='IP'; expression={(Get-CimAssociatedInstance -Association Win32_NetworkAdapterSetting $_).IPAddress}} |?{[Array]::IndexOf($_.IP,'%IP%') -ne -1}|%%{$_.NetConnectionID}"
FOR /F "USEBACKQ DELIMS=" %%A IN (`PowerShell.exe -Command %PSCMD%`) DO SET ADAPTER=%%A
ECHO [%ADAPTER%] |