Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 用于查找和删除注册表项和/或值的批处理脚本_Batch File_Registry - Fatal编程技术网

Batch file 用于查找和删除注册表项和/或值的批处理脚本

Batch file 用于查找和删除注册表项和/或值的批处理脚本,batch-file,registry,Batch File,Registry,我在互联网上搜索了一个批处理文件,以查找和删除注册表项和/或值。我在这里找到的最接近的东西是: . 但是,我在“HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run”中创建了一个名为“tasksche”的注册表项,更新了脚本注册表项和搜索变量,然后将操作更改为删除。它永远不会找到并删除它 我尝试过其他方法来解决这个问题,但没有任何效果 我想写的是: 批处理文件从文本文件中读取密钥列表 批处理文件扫描注册表中的那些键和/或值 批处理文件删除这些键

我在互联网上搜索了一个批处理文件,以查找和删除注册表项和/或值。我在这里找到的最接近的东西是: .

但是,我在
“HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run”
中创建了一个名为
“tasksche”
的注册表项,更新了脚本
注册表项和搜索变量,然后将操作更改为删除。它永远不会找到并删除它

我尝试过其他方法来解决这个问题,但没有任何效果

我想写的是: 批处理文件从文本文件中读取密钥列表 批处理文件扫描注册表中的那些键和/或值
批处理文件删除这些键。

您可以使用带有单个命令行的批处理文件执行此任务:

@for %%I in ("tasksche" "Other Value" "One More Value") do @%SystemRoot%\System32\reg.exe delete "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v "%%~I" /f 2>nul
FOR的内部命令对括号中指定的每个字符串运行外部命令REG,该命令从指定的注册表项中删除注册表值

如果要删除的值或注册表项本身不存在,REG将输出错误消息。但是写入STDERR的错误消息被重定向到设备NUL以抑制它

可以扩展此单行批处理文件,以读取要从文本文件中删除的注册表值,并另外输出找到并成功删除的注册表值

@echo off
setlocal EnableExtensions DisableDelayedExpansion
set "CreatedListFile="
set "ListFile=%TEMP%\ListFile.txt"

if not exist "%ListFile%" (
    set "CreatedListFile=1"
    (
        echo tasksche
        echo Other Value
        echo "One More Value"
    ) >"%ListFile%"
)

for /F "usebackq delims=" %%I in ("%ListFile%") do (
    %SystemRoot%\System32\reg.exe delete "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v "%%~I" /f 2>nul
    if not errorlevel 1 echo Deleted "%%~I" from HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
)

if defined CreatedListFile del "%ListFile%"
endlocal
当然,也可以在FOR执行的命令块中运行多个
reg delete
。但请注意,使用
reg delete
删除
HKLM
中的值或密钥需要管理权限,即批处理文件必须以管理员身份执行

要了解所使用的命令及其工作方式,请打开命令提示符窗口,在其中执行以下命令,并非常仔细地阅读为每个命令显示的所有帮助页面

  • del/?
  • echo/?
  • endlocal/?
  • 如果/?
  • 获取/?
  • reg/?
  • reg delete/?
  • 设置/?
  • setlocal/?

另请阅读Microsoft文章,其中介绍了用于创建列表文件的
以及用于抑制错误消息的
2>nul

是否尝试
Reg删除“HKCU\Software\Microsoft\Windows\CurrentVersion\Run”/V“tasksche”/F>Nul 2>&1
?因此,基本上您需要一个用于/F…
来处理文件中的行,然后调用例程从注册表中删除该键或值。如果它不在注册表中,删除将失败,但谁在乎呢?或者您需要在多个键之间搜索值名称吗?