REG QUERY 结合 FOR return 我需要的一半

REG QUERY combined with FOR return Half of what I need

我有一个 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

问题是,当我 运行 这个文件时,它 return :

"C:\Program

虽然我希望这是 returned :

"C:\Program Files (x86)\MyFolder\MyApplicationName\unins000.exe" /SILENT

是否有更好的方法来使用我的批处理文件检索信息?

根据您发布的内容,您应该可以将整个代码替换为:

@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

使用标记=2,*并设置“值=%%b”。见 /?从文档提示