У меня есть раздел реестра, созданный InnoSetup во время установки. Этот ключ содержит две информации:
Я не знаю, каково полное имя моего ключа. Единственная информация, которая у меня есть, это путь:
"HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall"
и значение ключа «DisplayName» (MyApplicationName).
Что мне нужно сделать, так это получить значение «QuietUninstallString», которое должно быть путем с «/ SILENT» в конце пути.
Прямо сейчас я написал этот пакетный файл:
@echo off
setlocal enableextensions disabledelayedexpansion
set tosearch=%1
for /f "tokens=3" %%a in ('
REG QUERY HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall /s /f %tosearch% ^| findstr "QuietUninstallString"
') do set "value=%%a"
echo %value%
И я называю это так:
test.bat MyApplicationName
Проблема в том, что когда я запускаю этот файл, он возвращает:
"C:\Program
Пока я хочу, чтобы это было возвращено:
"C:\Program Files (x86)\MyFolder\MyApplicationName\unins000.exe" /SILENT
Есть ли лучший способ получить информацию с помощью моего пакетного файла?
Спасибо, я пробовал с tokens=2,*
, но забыл изменить value==%%a
на value==%%b
. Можете ли вы написать это как ответ, чтобы я мог принять его? @Magoo
Основываясь на том, что вы опубликовали, вы сможете заменить весь свой код следующим:
@For /F "EOL= Delims=" %%G In ('%SystemRoot%\System32\reg.exe Query
"HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall" /S /F
"%~1" /E /D 2^>NUL') Do @For /F "Tokens=2,*" %%H In (
'%SystemRoot%\System32\reg.exe Query "%%G" /V "QuietUninstallstring" 2^>NUL'
) Do @Echo(%%I
Или, если намерение состоит в том, чтобы фактически запустить строку удаления:
@For /F "EOL= Delims=" %%G In ('%SystemRoot%\System32\reg.exe Query
"HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall" /S /F
"%~1" /E /D 2^>NUL') Do @For /F "Tokens=2,*" %%H In (
'%SystemRoot%\System32\reg.exe Query "%%G" /V "QuietUninstallstring" 2^>NUL'
) Do @Start "" %%I
Спасибо, с тем, что я написал благодаря комментарию Magoo и второй части вашего ответа, теперь у меня есть что-то лучше, и это работает лучше, чем то, что я намеревался сделать.
Используйте tokens=2,* и установите "value=%%b". Смотрите для /? из подсказки для документации
Используйте
tokens=2,*
иset "value=%%b"
. См.for /?
из подсказки для документации