批处理文件errorlevel

时间:2012-08-29 11:10:29

标签: file batch-file

我想确保我的机器上没有版本2 例如,我尝试在下面的行中获得3个版本:

REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\zup\Product" /v 3
if ERRORLEVEL  0 ( //found 3
ECHO error.>>%LogFileName%

但是当它试图从注册表中获取此字段时,我收到一个错误: “系统无法找到指定的注册表项或值” 那我怎么检查呢?

1 个答案:

答案 0 :(得分:1)

我认为问题在于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

以下是一些示例代码,用于检查记事本是否具有可见的状态栏。

记事本是键名,状态栏是ValueName。

@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