Это то, что вы ищете? ( for-l oop запускает команду и анализирует ее вывод в памяти)
For /F "EOL=HTokens=2*" %%H In ('^""%__AppDir__%reg.exe" Query "HKCU\Volatile Environment" /V ViewClient_IP_Address 2^>NUL^"')Do Set "IP=%%~I"
Чтобы узнать больше о том, как использовать reg.exe с запросом откройте окно командной строки и введите reg query /?
Если, как вы указали в своем вопросе, требуемое значение и данные находятся в HKEY_CURRENT_USER\Volatile Environment
, но в переменной / неизвестном подразделе имя, справочная информация должна показать вам, что вы можете использовать опцию /F
, чтобы найти ваше имя известного значения, ViewClient_IP_Address
, если вы указываете, что поиск должен найти значение с помощью /V
, он должен получить строку, которую вы need.
Например, в командной строке:
Reg Query "HKCU\Volatile Environment" /S /F "ViewClient_IP_Address" /V
Возвращает:
C:\Users\smith_ll>Reg Query "HKCU\Volatile Environment" /S /F "ViewClient_IP_Add
ress" /V
HKEY_CURRENT_USER\Volatile Environment\UnknownSubKey
ViewClient_IP_Address REG_SZ 192.168.1.15
End of search: 1 match(es) found.
Затем вы можете поместить эту команду в свой for-l oop и передайте его вывод через find.exe, чтобы изолировать строку, которую вам нужно проанализировать. Например, подчеркивание выглядит уникальным только для нужной вам строки. Поскольку мы уже исключаем любую строку, начинающуюся с H
, (с EOL=H
) , она не будет соответствовать строке End of search: 1 match(es) found.
:
Пример:
For /F "EOL=HTokens=2*" %%H In ('^""%__AppDir__%reg.exe" Query "HKCU\Volatile Environment" /S /F "ViewClient_IP_Address" /V 2^>NUL^|"%__AppDir__%find.exe" "_"^"')Do @Set "IP=%%~I"
Если вам не нравится супер длинная линия, вы можете разделить ее на несколько с помощью каретки:
For /F "EOL=HTokens=2*" %%H In ('^""%__AppDir__%reg.exe" Query^
"HKCU\Volatile Environment" /S /F "ViewClient_IP_Address" /V 2^>NUL^
^|"%__AppDir__%find.exe" "_"^"')Do @Set "IP=%%~I"