我有一个这样的txt文件:
HKLM\SOFTWARE\Classes\CLSID\{03ACC284-B757-4B8F-9951-86E600D2CD06}]
HKLM\SOFTWARE\Classes\CLSID\{03ACC284-B757-4B8F-9951-86E600D2CD06}\InprocServer32
HKLM\SOFTWARE\Classes\CLSID\{03ACC284-B757-4B8F-9951-86E600D2CD06}\ProgID
HKLM\SOFTWARE\Classes\CLSID\{03ACC284-B757-4B8F-9951-86E600D2CD06}\Programmable
HKLM\SOFTWARE\Classes\CLSID\{03ACC284-B757-4B8F-9951-86E600D2CD06}\TypeLib
HKLM\SOFTWARE\Classes\CLSID\{03ACC284-B757-4B8F-9951-86E600D2CD06}\VersionIndependentProgID
HKLM\SOFTWARE\Classes\CLSID\{17E3A1C3-EA8A-4970-AF29-7F54610B1D4C}
HKLM\SOFTWARE\Classes\CLSID\{17E3A1C3-EA8A-4970-AF29-7F54610B1D4C}\InprocServer32
HKLM\SOFTWARE\Classes\CLSID\{17E3A1C3-EA8A-4970-AF29-7F54610B1D4C}\ProgID
HKLM\SOFTWARE\Classes\CLSID\{17E3A1C3-EA8A-4970-AF29-7F54610B1D4C}\Programmable
我想删除大约 1000 个注册表项。最简单的方法是什么?
我不想一次删除一个。
答案1
从命令行:
for /f %A in (C:\your\text\file.txt) do (reg del "%A" /f)
批量:
@echo off
set "src=C:\your\text\file.txt"
for /f %%A in (%src%) do (
reg del "%%A" /f
)
正如评论所说,极好的编辑注册表时要小心谨慎 - 尤其是当您不能 100% 确定文本文件中的每个行/键都可以且应该被删除时。这可能无法让您免于灾难性的故障,但如果您采用批处理解决方案,您还可以在循环中添加某种备份功能:
@echo off
set "src=C:\your\text\file.txt"
set "bkp=%USERPROFILE%\Desktop\Backup"
if not exist "%bkp%" md "%bkp%"
for /f %%A in (%src%) do (
if not exist "%bkp%\%%A" md "%bkp%\%%A"
reg export "%%A" "%bkp%\%%A\key.reg"
reg del "%%A" /f
)
桌面上有一个名为“备份”的文件夹,它将在将每个密钥导出到其相应文件夹之前重新创建您要删除的密钥的注册表结构。根据密钥的名称,在创建文件夹时可能会出现特殊字符问题,但这只是一个示例,以防您对备份感兴趣。