[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[注册表类] 批处理如何删除已知键值关键字符的注册表项?

已知注册表中的某一大项(如HKEY_LOCAL_MACHINE\SOFTWARE\XYZ)下有:1、某些小项含有关键字符(如abc),但位置未知,例如HKEY_LOCAL_MACHINE\SOFTWARE\XYZ\...\123-abc-456,2、某些小项下的键或键值含有关键字符(同样是abc)

求解决:删除所有含有关键字符(如abc)的小项,无论是小项名称中包含关键字符还是键或键值包含关键字符,均删除其小项

3天惨案
应该可以用powershell的gci命令遍历注册表然后判断进行删除,不过对注册表部分不熟不好弄,而且也不好测试

TOP

  1. $delete?='abc'
  2. dir Registry::HKEY_LOCAL_MACHINE\SOFTWARE\XYZ -Recurse -ErrorAction SilentlyContinue|%{
  3.     $Name=$_.Name
  4.     if([regex]::Matches($Name,'(?!.+\\).+$').value -match $delete?){
  5.         try {
  6.             del Registry::$Name -WhatIf -Recurse -Force -ErrorAction SilentlyContinue
  7.             if(!$?){throw}
  8.         }catch{
  9.             Write-Warning "目标删除失败: $Name"
  10.         }
  11.     }
  12.     Get-ItemProperty Registry::$Name -Name $delete? -ErrorAction SilentlyContinue|%{
  13.         $Name=$_.Name
  14.         try {
  15.             Remove-ItemProperty Registry::$Name $delete? -WhatIf
  16.             if(!$?){throw}
  17.         }catch{
  18.             Write-Warning "目标删除失败: $Name"
  19.         }
  20.     }
  21. }
复制代码
没有实物测试,所以凭感觉写的,删除可能会比较久,因为注册表的数据量实在太大了 去掉whatif可以执行真正的删除,不去掉则只是测试结果

TOP

返回列表