【发布时间】:2012-10-24 01:18:59
【问题描述】:
我正在尝试删除我创建的批处理文件中的一些注册表项。
我在这里找到了以下代码,它运行良好,直到它命中 REG DELETE
for /F "tokens=1,*" %%a in ('REG QUERY "%KEY%" ^| findstr /I /C:"%VALUE%"') do (REG DELETE %KEY% /v %%a)
该值位于 [HK_CLASSES_ROOT\Installer\Assemblies\Global]
正如您可能看到的,这里的大多数值都包含引号,例如:
ADODB,fileVersion="7.10.2346.0",version="7.0.3300.00",culture="neutral",publicKeyToken="B03F5F7F11D50A3A"
这不是我想要删除的内容,但非常接近。
因此,如果我回显 %%a,它会显示值名称,因为它在 regedit 中带有引号和所有内容。 但是一旦它通过 REG DELETE(现在它要求确认),引号就不存在了,所以如果我点击是,它告诉我它找不到密钥。
显然它不能,因为它没有解析最初找到的相同内容。我一直在努力寻找解决方案,但到目前为止我还没有找到任何可以帮助我朝着正确方向前进的东西。我知道我可以在 vbs 中做同样的事情,但这是一行很长,而在 vbs 中做同样的工作会更长。
感谢您提供任何帮助,如果您需要更多信息,请随时询问,我刚刚开始处理批处理文件。我这样做是因为我每次在学校工作时都需要自动化我学校项目的所有依赖项的安装过程。(计算机被重影)
谢谢
【问题讨论】:
-
我发现了stackoverflow.com/questions/12822801/…,这是我以前没有偶然发现的,他们建议转义引号,我将研究它以编程方式进行并更新我的答案。
-
是的 - 我刚刚测试过,引号必须转义为
\" -
到目前为止我有这个
for /F "tokens=1,*" %%a in ('REG QUERY "%KEY%" ^| findstr /I /C:"%VALUE%"') do ( set b=%%a set b=%b:"=\"% echo REG DELETE %KEY% /v %b% )但似乎 b 总是空的,我认为我做错了什么,我现在正试图解决这个问题
标签: batch-file registry