windows - 如何删除注册表中的多个值

标签 windows batch-file registry dos

我正在尝试删除某些注册表值。我用过 the code (by "rojo") .

  1. 如果您定义确切的键,此代码将完美运行。例如,我想从 Run 键中删除 Logon.vbs。如果我也想删除Logoff.vbs,似乎我不能用*.vbs 来删除这两个。我该怎么做(删除具有相同扩展名的多个 key )?

  2. 一个相关的问题是如何删除保存特定数据的 key 。例如,我有一个名为 Logon 的 key ,其中包含 C:\Windows\Logon.vbs 的数据。我也想删除该 key 。使用上面的示例时,这不起作用。

我对这些 key 有权限,所以这不是问题。我错过了什么或做错了什么?

作为示例,我提供了一个屏幕截图,其中示例 (1) 由红色表示,(2) 由蓝色表示。截屏: Regedit screenshot

我的第一个示例中的代码如下所示:

@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/

相关文章:

php - Yii2 Camel Case Controller 在 Linux 服务器上显示 404 Not Found

batch-file - 使用批处理从网络驱动器复制到C : or D: drive

windows - 在 Windows 中批量重命名子目录

c++ - 检查注册表项是否链接到另一个注册表项(或拷贝)

windows - 如何创建名称中带有正斜杠的注册表项

c# - 在 C# 中读取注册表项

c# - 如何获取在windows平台上传输和接收的字节数?

windows - 未检测到支持 CUDA 的设备

编译差异: Windows vs. Linux

powershell - 如何找到所有.bat文件并一一执行?