zipi
zipi

Reputation: 743

batch file errorlevel

I want to Ensure that my machine there are no version up on 2 So example I try to get 3 version in the line below:

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

But when it try to get this field from the registry I get an error: “The system was unable to find the specified registry key or value” So how I can to check it?

Upvotes: 0

Views: 2807

Answers (1)

I think the problem is that Product is a ValueName.

If Product is the ValueName, you should be calling it like this:

REG QUERY "HKLM\SOFTWARE\zup" /v Product

this will echo the details of the ValueName Product


There is a problem with your if statement.

IF ERRORLEVEL 0 matches return codes equal to or greater than 0, which will always match.

To check for a missing ValueName use IF ERRORLEVEL 1

Noting that REG has two return code.

0 - Successful
1 - Failed

Here is some example code that checks if notepad has it's statusbar visable.

Notepad is the keyname and statusbar is the 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

Upvotes: 1

Related Questions