2012-08-29 6 views
0

Je veux assurer que ma machine il n'y a pas de version sur 2 donc par exemple j'essaie d'obtenir 3 version dans la ligne ci-dessous:fichier batch errorlevel

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

Mais quand il essaie d'obtenir ce domaine de le registre, je reçois une erreur: "Le système n'a pas pu trouver la clé de registre spécifiée ou la valeur" Alors, comment puis-je le vérifier?

+0

Essayez d'exécuter en tant qu'administrateur pour permettre l'accès à HKLM –

+0

J'essaie, mais je reçois la même erreur, la valeur 3 relais n'existe pas dans ce path.but si elle ne se trouve pas errorlevel 1 gérer ?! – zipi

Répondre

1

Je pense que le problème est que Product est un ValueName.

Si le produit est le ValueName, vous devriez l'appeler comme ceci:

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

ce fera écho aux détails du produit


ValueName

Il y a un problème avec votre si déclaration. Correspond à des codes de retour égaux ou supérieurs à 0, qui correspondront toujours à IF ERRORLEVEL 0

Pour vérifier une ValueName manquante utiliser IF ERRORLEVEL 1

Notant que REG a deux code de retour.

0 - Successful 
1 - Failed 

Voici quelques exemples de code qui vérifie si le bloc-notes a sa barre d'état visable.

Le bloc-notes est le nom-clé et la barre d'état est 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 
Questions connexes