我想确保我的机器在 2 上没有版本所以我尝试在下面的行中获取 3 版本:
REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\zup\Product" /v 3
if ERRORLEVEL 0 ( //found 3
ECHO error.>>%LogFileName%
但是当它试图从注册表中获取这个字段时,我得到一个错误:“系统无法找到指定的注册表项或值”那么我该如何检查呢?
我想确保我的机器在 2 上没有版本所以我尝试在下面的行中获取 3 版本:
REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\zup\Product" /v 3
if ERRORLEVEL 0 ( //found 3
ECHO error.>>%LogFileName%
但是当它试图从注册表中获取这个字段时,我得到一个错误:“系统无法找到指定的注册表项或值”那么我该如何检查呢?
我认为问题在于 Product 是一个 ValueName。
如果 Product 是 ValueName,你应该这样称呼它:
REG QUERY "HKLM\SOFTWARE\zup" /v Product
这将呼应 ValueName 产品的详细信息
你的 if 语句有问题。
IF ERRORLEVEL 0
匹配等于或大于 0 的返回码,这将始终匹配。
要检查缺少的 ValueName 使用IF ERRORLEVEL 1
注意 REG 有两个返回码。
0 - Successful
1 - Failed
这是一些示例代码,用于检查记事本是否具有可见的状态栏。
记事本是键名,状态栏是值名。
@echo off
setlocal
set statusbar=0
set query_command=reg query hkcu\software\microsoft\notepad /v statusbar
:: parse output of reg
for /f "tokens=1,2,3" %%a in ('%query_command%') do (
:: search for line starting with statusbar
if /i "statusbar"=="%%a" (
:: parse hex into int
set /a statusbar=%%c
)
)
if %statusbar% EQU 1 (
echo notepad's status bar is visable
) else (
echo notepad's status bar isn't visable
)
endlocal