File 批处理文件错误级别

File 批处理文件错误级别,file,batch-file,File,Batch File,我想确保我的机器在2上没有版本 因此,我尝试在下面的行中获得3个版本: REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\zup\Product" /v 3 if ERRORLEVEL 0 ( //found 3 ECHO error.>>%LogFileName% 但当它试图从注册表获取此字段时,我得到一个错误: “系统找不到指定的注册表项或值” 那么我该如何检查它呢?我认为问题在于产品是一个ValueName @echo off setlocal

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

REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\zup\Product" /v 3
if ERRORLEVEL  0 ( //found 3
ECHO error.>>%LogFileName%
但当它试图从注册表获取此字段时,我得到一个错误: “系统找不到指定的注册表项或值”
那么我该如何检查它呢?

我认为问题在于产品是一个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
如果Product是ValueName,则应该这样称呼它:

REG查询“HKLM\SOFTWARE\zup”/v产品

这将反映ValueName产品的详细信息


您的if语句有问题

如果错误级别为0
匹配等于或大于0的返回码,该返回码将始终匹配

若要检查缺少的ValueName,请在错误级别1时使用

注意,REG有两个返回码

0 - Successful
1 - Failed

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

Notepad是键名,statusbar是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

尝试以管理员身份运行以允许访问hklmI Try,但我收到相同的错误,该路径中不存在值3中继。但如果未找到,请执行错误级别1管理?!