我可以在中运行以下 reg query 命令Windows 7的并得到以下结果:
命令-
Reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall /s /f "EMC Avamar for Windows"
输出-
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{1693DDE2-4577-46E9-AEE2-0EAFE1F2A00E}
DisplayName REG_SZ EMC Avamar for Windows
现在当我运行相同的命令时Windows XP,出现以下错误:
错误-
Error: Too many command-line parameters
现在我发现,在 Window XP 中,您必须调整命令并按如下方式运行它:
命令-
reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall /s | FIND "EMC Avamar for Windows"
该命令有效,但我只得到以下输出减去实际的 regkey:
输出-
DisplayName REG_SZ EMC Avamar for Windows
与 Windows 7 命令一样,是否有办法在 XP 中运行查询来获取密钥名称?
答案1
编辑使用 Endoro 的纯批量答案而不是这个:)
如果您只想使用本机 Windows XP 命令,请使用以下命令:
批
@echo off
setlocal EnableExtensions
for /f "delims=" %%A in ('reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" /s') do (
echo("%%~A"| find /i "EMC Avamar for Windows" && goto break
echo("%%~A"| find /i "HKEY_" >nul && set "Last=%%A"
)
:break
echo %Last%
pause>nul
endlocal
输出
DisplayName REG_SZ EMC Avamar for Windows
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{1693DDE2-4577-46E9-AEE2-0EAFE1F2A00E}
注意,DisplayName输出行是由find
命令打印的,HKEY输出行也是由echo %Last%
命令打印的。
答案2
在 XP 中,你可以使用以下 shell 脚本(使用 GNUsed):
@echo off &SETLOCAL
SET "regkey=HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
SET "search=EMC Avamar for Windows"
SET "sedkey=%regkey:\=\\%"
reg query "%regkey%" /s | sed -n "/%sedkey%/{x};/%search%/{x;p;x;p}"
答案3
纯批次
@echo 关闭 设置本地启用扩展 设置“RegKey = HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall” 设置“搜索=EMC Avamar for Windows” 对于/f“tokens=1* delims=[]”%%A 在('reg query“%RegKey%”/s ^| find /i /n“%Search%”')中执行( 设置“ValuePos=%%A” 设置“值=%%B” ) 如果定义了 ValuePos for /f "tokens=1* delims=[]" %%A in ('reg query "%RegKey%" /s ^| find /i /n "%RegKey%"') do ( 如果 %ValuePos% gtr %%A 设置“Key=%%B” ) 回声(%键% 回声(%值%