java - 如何迭代所有的注册表项?

标签 java windows batch-file registry

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

下面的代码只是在一个特定的key下找到了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


)

最佳答案

我根据你最后的评论发布了这个。您(可能)需要遍历所有 key ,并且您不希望在末尾使用/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

关于java - 如何迭代所有的注册表项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27275169/

相关文章:

Java.nio.channels.ServerSocketChannel -accept() 内存泄漏

c++ - 如何在opencv c++中对图像进行骨架化

linux - 如何在 RCurl 中使用 FTP 将文件上传到从主目录向上的目录?

windows - 什么脚本(比如 .bat)可以在 windows、mac 和 linux 上运行

java - 如何在Micronaut框架中修复UnresolvedAddressException?

Java : Is `@WebParam` optional?

java - JfreeChart 背景图像不显示

c# - 将图像效果(灰度)应用到屏幕(PC监视器)

windows - 简单的 bat 文件记录到文本但错误

java - 在启动前确定最佳 Java 运行时参数?