Batch / REG QUERY получить путь найденного значения - PullRequest
0 голосов
/ 16 ноября 2018

Я пытаюсь создать командный файл, который находит определенный интерфейс (их имя варьируется от компьютера к компьютеру = запрос). Чтобы найти интерфейс, я использую определенный IP, который находится под этим интерфейсом в качестве значения. Код здесь может найти соответствующий интерфейс на основе IP-адреса, который я вставил в «IP-АДРЕС».

Но моя конечная цель - на основе этого поиска добавить два значения реестра в этот интерфейс, и поэтому мне нужен путь.

Как мне получить путь к переменной на основе поиска ниже?

for /f "tokens=3*" %%a in ('reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\ /s /f "IP-ADDRESS"') do set Myvar=%%b

ECHO %Myvar%
PAUSE

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 16 ноября 2018

Вот одна возможность для вас:

@Echo Off
Set "RKP=HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces"
Set "RVD=172.26.193.3"
Set "RKC="

For /F "Delims=}" %%A In ('Reg Query "%RKP%" /S /F "%RVD%" /D 2^>Nul'
) Do If Not Defined RKC Set "RKC=%%A}"

If Not Defined RKC Exit /B

Rem show the variable and value for five seconds
Set RKC
Timeout 5 >Nul
0 голосов
/ 16 ноября 2018

Здесь возвращается следующий пакетный файл:

> Q:\Test\2018\11\16\SO_53340832.cmd
IPADDRESS:192.168.56.1 on interface:{4fe80965-dda5-466a-801d-14937fd3829c}

Используется "tokens=1,2*" и / v IPADDRESS без тире.

:: Q:\Test\2018\11\16\SO_53340832.cmd
@Echo off & SetLocal EnableExtensions EnableDelayedExpansion

Set "Key=HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces"
Set "Val=IPADDRESS"

For /f "tokens=1,2*" %%A in (
  'reg query "%Key%" /s /v "%Val%" ^| findstr /i "^HKEY %Val%"'
) Do if /i "%%A" neq "%Val%" (rem must be HKEY
    Set "Interface=%%A"
) Else (
    Echo %VAL%:%%C on interface:!Interface:%Key%\=!
)
...