有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我试图迭代所有注册表项以查找(包含)和删除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) 个答案

  1. # 1 楼答案

    我是根据你最后的评论发布的。您(可能)需要检查所有的键,并且您不希望在最后使用/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