标题: [注册表类] 批处理删除注册表内容 [打印本页]
作者: wh1234567 时间: 2021-2-22 14:41 标题: 批处理删除注册表内容
电脑点右键反应慢(鼠标右键一直转圈)的解决办法:
由于Intel显卡驱动在桌面右键的加载项造成。
解决方案:清理注册表中桌面右键加载项,点击开始,输入regedit,找到HKEY_CLASSES_ROOT\Directory\Background\shellex\ContextMenuHandlers\,然后在ContextMenuHandlers项目下,除了New和Sharing,其他选项都删除。关闭注册表,回到桌面试试你的菜单右键是不是就OK了。
以上是手动解决的办法,能不能用批处理自动实现呢?也就是删除 除了New和Sharing 以外的项。
作者: WHY 时间: 2021-2-25 13:38
右键选择"使用管理员身份运行",先备份注册表。- @echo off
- PowerShell "dir Registry::HKCR\Directory\Background\shellex\ContextMenuHandlers | ?{$_.Name -notmatch '\\(?:New|Sharing)$'} | rd -Recurse"
- pause
复制代码
作者: smss 时间: 2021-2-25 14:34
- for /f "delims=" %%i in ('reg query "HKCR\Directory\Background\shellex\ContextMenuHandlers" /s ^|findstr /v "New Sharing"')do reg delete "%%i" /f
复制代码
作者: WHY 时间: 2021-2-25 16:33
- @echo off
- for /f "delims=" %%i in ('reg query "HKCR\Directory\Background\shellex\ContextMenuHandlers" /k /f * ^| findstr /v "\\New$ \\Sharing$ ^[^\\]*$"') do (
- echo; reg delete "%%i" /f
- )
- pause
复制代码
作者: wh123wh123 时间: 2021-2-25 17:13
本帖最后由 wh123wh123 于 2021-2-25 17:14 编辑
回复 4# WHY
@echo off
PowerShell "dir Registry::HKCR\Directory\Background\shellex\ContextMenuHandlers | ?{$_.Name -notmatch '\\(?:New|Sharing)$'} | rd -Recurse"
pause
这是备份需要删除的那2个以外的项吗?如果是,那么备份到哪里了?如何恢复?
@echo off
for /f "delims=" %%i in ('reg query "HKCR\Directory\Background\shellex\ContextMenuHandlers" /k /f * ^| findstr /v "\\New$ \\Sharing$ ^[^\\]*$"') do (
echo; reg delete "%%i" /f
)
pause
这是删除那2个以外的项吗?
不会误删除吧?
作者: WHY 时间: 2021-2-25 17:56
回复 5# wh123wh123
2楼的意思是,先手动运行 regedit 备份注册表,然后运行脚本。目的是避免误删。
4楼先测试,如果显示结果与你期望的一致,把脚本中的 echo;删掉,再次运行即可。
作者: wh123wh123 时间: 2021-2-25 19:39
本帖最后由 wh123wh123 于 2021-2-25 19:42 编辑
回复 6# WHY
明白意思了,如果没有回显内容【之前手工删除过】,说明不需要删除,是吧?
作者: wh123wh123 时间: 2021-2-25 19:47
回复 wh123wh123
2楼的意思是,先手动运行 regedit 备份注册表,然后运行脚本。目的是避免误删。 ...
WHY 发表于 2021-2-25 17:56
@echo off
for /f "delims=" %%i in ('reg query "HKCR\Directory\Background\shellex\ContextMenuHandlers" /k /f * ^| findstr /v "\\New$ \\Sharing$ ^[^\\]*$"') do (
echo; reg delete "%%i" /f
)
pause
这是自动单纯的备份注册表吗?
作者: WHY 时间: 2021-2-25 22:08
回复 8# wh123wh123
不是的,这个脚本没有备份功能,你需要手动备份。
脚本回显的内容是需要删除的注册表项,回显几条就需要删除几个注册表项。没有回显说明不需要删除。
举例:
C:\Users\WHY>reg query "HKCR\Directory\Background\shellex\ContextMenuHandlers" /k /f *
HKEY_CLASSES_ROOT\Directory\Background\shellex\ContextMenuHandlers\ACE
HKEY_CLASSES_ROOT\Directory\Background\shellex\ContextMenuHandlers\Gadgets
HKEY_CLASSES_ROOT\Directory\Background\shellex\ContextMenuHandlers\New
HKEY_CLASSES_ROOT\Directory\Background\shellex\ContextMenuHandlers\Sharing
搜索结束: 找到 4 匹配。
意思是 HKCR\Directory\Background\shellex\ContextMenuHandlers 这个注册表项下面共有4个子项。
运行脚本后的回显:
C:\Users\WHY>C:\Users\WHY\Desktop\test.bat
reg delete "HKEY_CLASSES_ROOT\Directory\Background\shellex\ContextMenuHandlers\ACE" /f
reg delete "HKEY_CLASSES_ROOT\Directory\Background\shellex\ContextMenuHandlers\Gadgets" /f
请按任意键继续. . .
意思是脚本会删除 ACE 和 Gadgets 子项。
上面仅仅是回显,让你自己确认回显结果与你期望的结果是否一致。
把脚本里面的 echo; 删掉,再次运行(以管理员身份运行)就 OK 了。
作者: wh123wh123 时间: 2021-2-25 22:29
本帖最后由 wh123wh123 于 2021-2-25 22:32 编辑
回复 9# WHY
如果一边回显一边删除子项的话,echo; reg delete "%%i" /f 这里怎么修改?因为去掉echo的话看不到是否删除成功以及删除了哪些子项
老师是一位很热心和很负责任的人,也是一个很认真做事和诚信的人,能感受得到,祝福老师前途无量,幸福安康。
作者: flashercs 时间: 2021-2-25 23:01
回复 10# wh123wh123 - @echo off
- for /f "delims=" %%i in ('reg query "HKCR\Directory\Background\shellex\ContextMenuHandlers" /k /f * ^| findstr /v "\\New$ \\Sharing$ ^[^\\]*$"') do (
- echo; reg delete "%%i" /f
- reg delete "%%i" /f
- )
- pause
复制代码
作者: wh123wh123 时间: 2021-2-25 23:54
本帖最后由 wh123wh123 于 2021-2-26 00:04 编辑
回复 11# flashercs
删除[子项a]成功!
删除[子项B]成功!
或者 无需要删除的项!
@echo off
for /f "delims=" %%i in ('reg query "HKCR\Directory\Background\shellex\ContextMenuHandlers" /k /f * ^| findstr /v "\\New$ \\Sharing$ ^[^\\]*$"') do (
echo 待删除项:reg delete "%%i" /f
reg delete "%%i" /f
echo 删除["%%i"]成功!
)
pause
无删除项咋回显“无需要删除的项!”
作者: WHY 时间: 2021-2-26 10:13
回复 12# wh123wh123 - @echo off
- for /f "delims=" %%i in ('reg query "HKCR\Directory\Background\shellex\ContextMenuHandlers" /k /f * ^| findstr /b "HKEY"') do (
- if /i "%%~nxi" == "Sharing" (
- echo;[Sharing]子项不需要删除
- ) else if /i "%%~nxi" == "New" (
- echo;[New]子项不需要删除
- ) else (
- reg delete "%%i" /f >nul 2>&1 && echo;[%%~nxi]子项删除成功 || echo;[%%~nxi]子项删除失败
- )
- )
- pause
复制代码
作者: wh123wh123 时间: 2021-2-26 11:31
回复 13# WHY
感谢老师认真负责的热心帮助,祝福老师前途无限好...... 评分超出限制。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |