簡體   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