如何迭代所有注册表项?

时间:2014-12-03 15:12:34

标签: java windows batch-file registry

我正在尝试迭代所有注册表项以查找(包含)和删除jre1.5.0_14值。有办法吗?

下面的代码只是在特定键下找到jre1.5.0_14!我想迭代所有的键。顺便说一下if子句是否等于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


)

1 个答案:

答案 0 :(得分:0)

我发布的是你最后的评论。你(可能)需要通过所有的密钥,而你最后不想要/ d。

如果您知道字符串位于特定键中,请使用此字符(我认为这是您最初使用的字符串):

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