繁体   English   中英

批处理文件,查询注册表

[英]Batch file, query the registry

您好,StackoverFlow的人,

我正在尝试查询以下注册表位置(此处的每个文件夹) HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall

在里面有这样的随机数:

{071c9b48-7c32-4621-a0ac-3f809523288f}

在这些随机数的每一个中,我需要检查每个位置中的键“ DisplayName”是否包含特定文本,比如说“ OverFlow”。

我已经做了一些查询,但不是这样,如果有人可以帮助的话,那太好了!

编辑:我已经取得了一些进展,但遇到一个问题(我做了很多研究...)

以下是我到目前为止的内容:

@echo off

setlocal


:RemoveCVCP
set PythonReg=
for /f "tokens=1"  %%A in ('reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall /s /v "DisplayName" ^| find "Python"') do set "PythonReg=%%A"
if %ERRORLEVEL% neq 0 (
GOTO RemovePyCP)
echo %PythonReg%

endlocal

pause

我想做的是通过“ KLM \\ SOFTWARE \\ Microsoft \\ Windows \\ CurrentVersion \\ Uninstall”循环,并查看“ DisplayName”键,如果数据包含“ Python”,则将其删除。 并继续下去,直到不再有。

现在,我正在用回显测试它,但是它将迅速删除它。

(我仅以python为例,已经删除了与要删除的软件相关的所有其他内容,这是最后一个位置。)

谢谢迈克尔

首先,列出所有包含python值,每个条目将打印两行:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{E43BBAEB-4914-44C6-88C0-E7A1DBD20A91}
    DisplayName    REG_SZ    Some application title with python in its name

然后删除那些打印值名称为DisplayName键:

@echo off
setlocal enableDelayedExpansion

for /f "tokens=1,2*" %%A in ('^
    reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall /s /d /f "python"^
') do (
    if "%%A"=="DisplayName" (
        echo Deleting %%C
        reg delete !key! /f
    ) else (
        set str=%%A
        if "!str:~0,4!"=="HKEY" set key=%%A
    )
)
pause

此代码假定键名中没有空格。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM