Я немного неопытен с CMD и надеюсь, что кто-то здесь может мне помочь.
В одном из моих старых сценариев установки мне нужно проверить, установлен ли .NET 3.5, а затем либо установить пакет 3.5, либо продолжить работу со сценарием в зависимости от результата.
Теперь у меня возникли проблемы при попытке проверить установленную версию в моем скрипте.
Я использую этот запрос reg для поиска установленной версии:
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP" | Find "3.5"
выводит одну строку, если установлен 3.5, или ничего, если это не так:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5
Теперь моя идея состояла в том, чтобы создать переменную и заполнить значение выводом, показанным выше.
К сожалению что-то вроде:
set DNFound=reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP" | Find "3.5"
if not exist %DNFound%
(
install framework
)
не работает, потому что вывод не будет сохранен в переменной.
Я немного исследовал и видел, как люди идут в цикле в этом формате, чтобы получить отдельные значения из вывода запроса reg в переменную (пример кода):
for /f "tokens=3" %%x in ('reg query HKLM\System\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile /v EnableFirewall') do set FWSTATUS=%%x
Однако я получаю синтаксическую ошибку при попытке сделать то же самое из-за части | Find "3.5"
в моем запросе reg.