吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 431|回复: 5
收起左侧

[求助] 向大家请教一个Batch脚本的问题

[复制链接]
AnonHedgehog 发表于 2023-3-16 21:37
如题,电脑上有些软件存在卸载后注册表没有删干净,导致非常多文件后缀都还与软件存在着关联。
有一个办法就是在注册表HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts路径下,
将所有拓展名(如下图所示)内的注册表项内的一个key给删除。

拓展

拓展

当然因为存在的子项目太多了不想手动删,就尝试写了一个batch脚本,但遇到了一点问题。
首先在cmd或者powershell内直接输入reg query HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts
能够极快的返回所有的子项目路径,这个是没问题的,但到了脚本里就出现问题了。
首先尝试用循环处理所有子项目:
set "regpath=HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts"

for /f "tokens=*" %%a in ('reg query "%regpath%"') do (
    ::删除key

但是问题在于这个循环会不断创建新的handle,最后直接卡爆,而且Ctrl-C还中止不了。
一旦运行这个脚本,循环内部什么都不干都能够在2秒内直接卡死机,让我感到非常困惑。
在网上稍加搜索后并没有看到类似的案例,而且这个循环本身好像也是正常的。希望有大佬能够为我解惑。

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| AnonHedgehog 发表于 2023-3-17 22:46
没有人嘛
TanXin 发表于 2023-3-18 00:09
我有个思路:

可以考虑将 reg query "%regpath% 的结果先存入临时文件,然后利用 for /F 循环处理那个临时文件中的子项目。

只能先试一试

TanXin 发表于 2023-3-18 00:17
来,接着完善一下:

[Shell] 纯文本查看 复制代码
@echo off

reg query HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts > temp.tmp

for /F "tokens=*" %%i in (temp.tmp) do (
	::删除key
	echo - %%i
)
pause
 楼主| AnonHedgehog 发表于 2023-3-18 17:13
TanXin 发表于 2023-3-18 00:09
我有个思路:

可以考虑将 reg query "%regpath% 的结果先存入临时文件,然后利用 for /F 循环处理那个临 ...

谢谢!我试一下!
 楼主| AnonHedgehog 发表于 2023-3-18 17:21
TanXin 发表于 2023-3-18 00:17
来,接着完善一下:

[mw_shl_code=shell,true]@echo off

确实先把路径都存文件里就可以了老哥牛逼。之前那个不知道为什么直接循环就会卡死。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 00:22

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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