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