REG QUERY 结合 FOR return 我需要的一半
REG QUERY combined with FOR return Half of what I need
我有一个 InnoSetup 在安装过程中创建的注册表项。此密钥包含两个信息:
- 显示名称
- QuietUninstallString
我不知道我的密钥的全名是什么。我唯一的信息是路径:
"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”。见 /?从文档提示
我有一个 InnoSetup 在安装过程中创建的注册表项。此密钥包含两个信息:
- 显示名称
- QuietUninstallString
我不知道我的密钥的全名是什么。我唯一的信息是路径:
"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”。见 /?从文档提示