我正在尝试删除某些注册表值。我用过 the code (by "rojo") .
如果您定义确切的键,此代码将完美运行。例如,我想从 Run 键中删除 Logon.vbs。如果我也想删除Logoff.vbs,似乎我不能用*.vbs 来删除这两个。我该怎么做(删除具有相同扩展名的多个 key )?
一个相关的问题是如何删除保存特定数据的 key 。例如,我有一个名为 Logon 的 key ,其中包含 C:\Windows\Logon.vbs 的数据。我也想删除该 key 。使用上面的示例时,这不起作用。
我对这些 key 有权限,所以这不是问题。我错过了什么或做错了什么?
作为示例,我提供了一个屏幕截图,其中示例 (1) 由红色表示,(2) 由蓝色表示。截屏:
我的第一个示例中的代码如下所示:
@echo off
setlocal
set "DisableScripts=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"
rem get only the first token of each line of "reg query"
for /f %%I in (
'reg query "%DisableScripts%"'
) do (
echo(%%I | findstr /i "Logon.vbs" >NUL && (
rem (if "findstr" didn't exit with an abnormal error code)
echo Deleting item %%I
reg delete "%DisableScripts%" /v "%%I" /f
)
这会很好地删除 key “Logon.vbs”。但是,我还想删除“Logoff.vbs”。我已尝试使用“*.vbs”,但无济于事。
上面的代码也没有删除数据包含 Logon.vbs 的“脚本”值。我想我将不得不为此使用 /d 开关......
最佳答案
第一个例子的代码:
for /f %%a in ('reg query "%DisableScripts%" /s^|findstr /ic:"\.vbs "') do echo reg delete "%DisableScripts%" /v "%%~a" /f
第二个例子的代码:
for /f %%a in ('reg query "%DisableScripts%" /s^|findstr /eic:"C:\\logon\.vbs"') do echo reg delete "%DisableScripts%" /v "%%~a" /f
请注意正则表达式 "\.vbs "
和 "C:\\logon\.vbs"
。使用具有管理员权限的命令行。
关于windows - 如何删除注册表中的多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19957621/