我试图查询特定的注册表文件夹(或任何你想要调用它)来获取一些信息。通过批处理语法查询Windows注册表
特别是HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
文件夹包含已安装软件的列表。
问题是,每个软件都是通过一个随机的键值,如{0001B4FD-9EA3-4D90-A79E-FD14BA3AB01D}
而不是实际的软件(如Skype
)来识别的。
这使得它很难找到Skype
标识符,因为我通过一切需要循环这一Uninstall
文件夹内,并检查DisplayName
值是否对应于Skype
(或任何其他应用程序的名称)。
我需要使用批处理语法...这是我迄今为止,但它在不同的计算机上表现不一样,也许我根据reg输出的一些错误格式获得不同的变量分配?我不知道。我可以使用数据结构来包含任何reg
输出吗?任何事情都可以工作。
@echo off
for /f "tokens=*" %%a in ('reg query HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall') do (
for /f "tokens=2,* delims= " %%b in ('reg query %%a /v Publisher') do (
IF "%%c" == "Skype Technologies S.A." (
for /f "tokens=2,* delims= " %%d in ('reg query %%a /v UninstallString') do (
echo %%e
)
)
)
)
是否有一个更清洁和更安全的方式来批量实现这一点?
也许你最好在ServerFault上问这个问题。关于你的数据结构,只是把它写到一个临时文件是不够的我假设?! – 2010-09-20 09:08:26