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…
的来处理文件中的行,然后调用例程从注册表中删除该键或值。如果它不在注册表中,删除将失败,但谁在乎呢?或者您需要在多个键之间搜索值名称吗?