我正在尝试迭代所有注册表项以查找(包含)和删除 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/