Board logo

标题: [注册表类] 删除注册表BAT脚本通配符 [打印本页]

作者: ZZH123    时间: 2021-10-26 19:44     标题: 删除注册表BAT脚本通配符

想删除注册表"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run"下含 “oa”字样的键值。使用通配符“*”,“%”,“?”均不好使。有什么方法可以匹配删除含oa的键值。脚本如下:reg delete "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run"  /v  "oa"
作者: idwma    时间: 2021-10-26 22:26

  1. set "run=HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run"
  2. for /f %%i in ('reg query "%run%"^|findstr ".*oa.*"') do reg delete "%run%" /v "%%i"
复制代码

作者: ZZH123    时间: 2021-10-27 09:38

回复 2# idwma
感谢大佬,验证好用。请问怎么连续配符多个。比如匹配含“css”,“你好”,“OA”
作者: idwma    时间: 2021-10-27 09:44

回复 3# ZZH123
  1. set "run=HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run"
  2. for /f %%i in ('reg query "%run%"^|findstr "oa css 你好"') do reg delete "%run%" /v "%%i"
复制代码

作者: ZZH123    时间: 2021-10-27 09:53

回复 4# idwma
大佬,我的想法是。连续通配符连续匹配“oa”,“你好”,“css”。具体删除的值有:111css、222css333、777你好、你好999、111oa、222oa、oa333
作者: qixiaobin0715    时间: 2021-10-27 10:00

回复 4# idwma
匹配字符中含有中文字符时,findstr最好加上参数/r,不加的话有时可能会出问题。
作者: ZZH123    时间: 2021-10-27 14:34

回复 6# qixiaobin0715
你好,请问是这么加吗?
for /f %%i in ('reg query "%run%"^|findstr /r ".*你好.*"') do reg delete "%run%" /v "%%i" /f
作者: qixiaobin0715    时间: 2021-10-27 16:15

4楼代码只需修改findstr /r即可,其余不动。
作者: ZZH123    时间: 2021-10-27 20:10

另外请问匹配时怎么不区分大小写
作者: qixiaobin0715    时间: 2021-10-27 20:22

回复 9# ZZH123
要善于运用命令的帮助。比如这里使用findstr命令,你可以打开cmd,输入findstr /?,即可查询到各种参数的用法。/i就是你所需要的参数。
作者: WHY    时间: 2021-10-27 21:01

PowerShell 脚本
  1. $path = 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Run';
  2. $name = (Get-Item $path).GetValueNames() -match '(?-i)css|你好|OA';
  3. if($name.Count){Remove-ItemProperty $path $name;}
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2