1

Мне нужен пакетный цикл, который должен извлечь значение данных и использовать его в своей следующей команде. Все ключи реестра, которые я хочу запросить, были сохранены в файл * .txt.

Пример:

Следующая команда вернет значение ключа, тип и данные, как показано ниже.

COMMAND:

reg query HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\01690987922DC9549A63529D22383DDF\InstallProperties /V UninstallString

РЕЗУЛЬТАТ:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\01690987922DC9549A63529D22383DDF\InstallProperties
    UninstallString    REG_EXPAND_SZ    MsiExec.exe /X{78909610-D229-459C-A936-25D92283D3FD}

Я хочу извлечь только значение данных MsiExec.exe /X{78909610-D229-459C-A936-25D92283D3FD} и запустить его в качестве следующей команды в цикле for.

У меня есть примерно 20 ключей реестра, которые я хочу запросить, а затем выполнить извлеченную команду. Я также хочу добавить тихие ключи к команде msiexec.exe при ее выполнении.

Я очень новичок в пакетных циклах и считаю, что мне нужно использовать токены / разделители (?)... не совсем уверен, как заставить это работать.

1 ответ1

1

reg query список ключей из текстового файла и повторно использовать значения данных

reg query HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\01690987922DC9549A63529D22383DDF\InstallProperties /V UninstallString

Я хочу извлечь только значения данных MsiExec.exe и /X{78909610-D229-459C-A936-25D92283D3FD} и запустить их как следующую команду в цикле for .

Следующий пакетный файл должен помочь вам начать:

@echo off
setlocal enableDelayedExpansion
rem get each key from keys.txt
for /f "usebackq tokens=*" %%i in (`type keys.txt`) do (
  echo Processing key %%i
  rem skip the first line and grab tokens 3 and 4 from the second line
  for /f "usebackq skip=1 tokens=3,4" %%j in (`reg query %%i`) do (
    echo %%j /quiet %%k
    )
  )

Заметки:

  • keys.txt должен содержать ключи для запроса, по одному на строку.
  • Вам нужно два цикла for , первый для обработки каждой клавиши, второй (внутренний) для разбора вывода.
  • Мы пропускаем первую строку вывода, так как это имя ключа.
  • Удалите echo из echo %%j /quiet %%k когда вы довольны тем, что делает пакетный файл.
  • Я предполагаю, что /quiet это переключатель, который вам нужен для "тихого". Изменить по необходимости.

Дальнейшее чтение

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .