批处理文件注册表查询

时间:2015-01-19 16:46:51

标签: batch-file

我有一个.bat文件,用于查询注册表项以查找DisplayName。如果它发现DisplayName与某个版本号匹配,则会将密钥添加到另一个注册表配置单元。如果它与某个版本号不匹配,则它什么都不做并存在......

我遇到的问题是这个逻辑有效,只要注册表项存在我正在检查存在。如果它不存在,它会将密钥添加到注册表中。

有没有一种好方法可以预先说明如果注册表项根本不存在就退出?我想在检查显示版本时,不存在的密钥会构成不匹配的显示名称,因此代码退出但显然不是。

@echo off
reg query HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall\{B8B03F49-B83A-4DD4-8925-10440664515E} /v DisplayVersion

for /f "tokens=3" %%i in ('reg query HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall\{B8B03F49-B83A-4DD4-8925-10440664515E} /v DisplayVersion') do (
if %%i EQU 3.5.0.88 goto exist
if %%i NEQ 3.5.0.88 goto not_exist
)

:exist
reg add HKLM\Software\Wow6432Node\Temp\{B8B03F49-B83A-4DD4-8925-10440664515E} /v DisplayVersion /t REG_SZ /d 3.5.0.88

:not_exist
exit

1 个答案:

答案 0 :(得分:0)

如果密钥不存在,您将通过FOR LOOP并执行reg add。在FOR LOOP的结束表后,你需要在行上添加一个EXIT语句。