如何迭代所有的registry项?

我正在尝试遍历所有的registry项以便查找(包含)并删除jre1.5.0_14值。 有没有办法做到这一点?

下面的代码只是在特定的键下findjre1.5.0_14! 我想要迭代所有的键。 顺便说一下,如果子句得到,如果它等于jre1.5.0_14,但它应该是如果它包含jre1.5.0_14。

提前致谢。

最好的祝福。

@echo off setlocal set KEY_NAME="HKEY_CURRENT_USER\Software\Microsoft\Notepad" set VALUE_NAME=jre1.5.0_14 FOR /F "skip=2 tokens=3" %%A IN ('REG QUERY %KEY_NAME%') DO if "%%A"=="%VALUE_NAME%" ( @echo %%A ) 

Solutions Collecting From Web of "如何迭代所有的registry项?"

我发布这个你最后的评论。 你(可能)需要通过所有的密钥,并且你不想在/最后。

如果你知道字符串是在一个特定的键,使用这个(我认为是你原来的):

 For /f %%a in ('reg query HKCR /f jre1.5.0_14') do ( rem do deletion here echo %%a &&pause ) 

使用以下来查看所有的键。 它运行每个键上的查询,如果在输出中找到“hkey”(表明查询出现了某种情况),则将该行(位置)写入regout.txt。 第二个for循环遍历文件的每一行,您可以在其中执行reg delete命令。

 @echo off SETLOCAL EnableDelayedExpansion del regout.txt >NUL 2>&1 for %%a in (HKCU, HKLM, HKU, HKCR) do REG QUERY %%a /f jre1.5.0_14 | FIND /i "hkey" >>regout.txt for /f %%a in (regout.txt) do ( rem do deletion here echo %%a &&pause ) exit 

如果文件是空的,字符串没有找到,你应该再次在Windows中运行regedit,以确认它在那里。


编辑:尝试解决“进程无法访问该文件,因为该文件正在被另一个进程使用。

试试这个代码:它使用不同的文件名并创建一个带查询输出的tmp文件,然后将其复制到txt。 新的txt文件一定要解锁。

 @echo off SETLOCAL EnableDelayedExpansion del regout.txt >Nul 2>&1 del regout.tmp >Nul 2>&1 del output.txt >Nul 2>&1 for %%a in (HKCU, HKLM, HKU, HKCR) do REG QUERY %%a /f jre1.5.0_14 | FIND /i "hkey" >>output.tmp copy output.tmp output.txt /y for /f %%a in (output.txt) do ( rem do deletion here echo %%a &&pause del output.tmp ) exit