无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 8577|回复: 23
打印 上一主题 下一主题

[求助] 求一段批处理代码,查找指定注册表下的子项的值,如果指定的值为abc,则删除该项

[复制链接]
1#
发表于 2021-1-21 03:01:30 | 显示全部楼层
本帖最后由 610644034 于 2021-1-21 03:09 编辑

其实实现起来还是很简单的  用 bat脚本 实现

@echo off
setlocal enabledelayedexpansion
rem 脚本参数1:注册表路径 脚本参数2:需要查找删除的数据
rem *****这里因为简便处理获取 注册表数值名称 如果注册表数值名称包含空格 将会删除错误的数值名称******
call :查找删除指定注册表下的子项的值 "%~1" "%~2"
goto :eof
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:查找删除指定注册表下的子项的值
rem :查找删除指定注册表下的子项的值 "in"       "in"
rem :参数列表                       注册表路径 需要查找删除的数据
set "查找删除指定注册表下的子项的值_注册表路径=%~1"
set "查找删除指定注册表下的子项的值_查找数据=%~2"
call :扫描注册表数值项并回调 "%~1" ":查找删除指定注册表下的子项的值_001" "查找删除指定注册表下的子项的值_临时数据"
goto :eof

:查找删除指定注册表下的子项的值_001
rem 这里只简单的获取注册表数值名称
echo x!%~1! | findstr /i "!查找删除指定注册表下的子项的值_查找数据!" >nul 2>nul && (
    for %%a in ( !%~1! ) do if "" NEQ "%%a" (
        set "查找删除指定注册表下的子项的值_需要删除的数值名称=%%a"
        echo 正在删除注册表路径:!查找删除指定注册表下的子项的值_注册表路径!
        echo 数值名称:%%a
        Reg Delete "!查找删除指定注册表下的子项的值_注册表路径!" /v "%%a" /f
        echo.
        goto :eof
    )
)
goto :eof
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:扫描注册表数值项并回调
rem :扫描注册表数值项并回调 "in"       "in"        "in_ptr"  
rem :参数列表               注册表路径 [回调标签]  [数据名称]  
( Reg Query "%~1" )>nul 2>nul || (
    goto :eof
)

if "" EQU "%~2" for /f "delims=*" %%a in ( 'Reg Query "%~1" ' ) do if "" NEQ "%%a" call :扫描注册表数值项并回调_001 "%~1" "%%~a"

if "" NEQ "%~2" if "" NEQ "%~3" for /f "delims=*" %%a in ( 'Reg Query "%~1" ' ) do if "" NEQ "%%a" (
    set "%~3=%%a"
    call :扫描注册表数值项并回调_002 "%~1" "%~2" "%~3"
)

if "" NEQ "%~2" if "" EQU "%~3" for /f "delims=*" %%a in ( 'Reg Query "%~1" ' ) do if "" NEQ "%%a" call :扫描注册表数值项并回调_003 "%~1" "%~2" "%%~a"
goto :eof

:扫描注册表数值项并回调_001
echo x%~2 | findstr /i /V "%~1" >nul 2>nul && echo %~2
goto :eof
:扫描注册表数值项并回调_002
echo x!%~3! | findstr /i /V "%~1" >nul 2>nul && call %~2 "%~3"
goto :eof
:扫描注册表数值项并回调_003
echo x%~3 | findstr /i /V "%~1" >nul 2>nul && call %~2 "%~3"
goto :eof
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-5-5 17:39

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表