[英]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.