2009-11-17 5 views
0

J'essaie de définir une variable sur un chemin de registre. Ensuite, interroger un registre et essayer de faire correspondre avec la variable. Si les deux sont identiques, alors goto s'exécute. Mais pour une raison Im obtenir l'erreur et ressemble à il y a un problème avec cette commandeEssayer de stocker la sortie d'une commande vers une variable et essayer de faire correspondre dans le fichier de commandes

set var=HKEY_LOCAL_MACHINE\System\x 

IF reg query==var 
GOTO EXecute 

Répondre

2

ce que vous faites il y a juste comparaison des chaînes. Comment l'interpréteur de commandes devrait-il savoir que reg query est une commande (à part le fait qu'elle ne suffira pas à elle seule).

Ce que vous devez faire ici est d'exécuter votre programme, capturer sa sortie, puis comparer. Vous pouvez le faire avec la commande for /f:

for /f %%x in ('reg query ...') do ... 

Cependant, la sortie de reg est lisible par l'homme, et non lisible par machine, vous devez donc un peu de travail pour obtenir ce droit. Fondamentalement, vous devez ignorer les lignes vides dans cette instruction for ainsi que la ligne d'en-tête ... et vous devez ensuite trouver la valeur réelle qui vous intéresse. Cela deviendra vite laid.

0
for /f %%a in ('reg query ...') do if "%var%" == "%%a" goto Execute 
+0

Il donne erreur %% un est inattendu à ce moment – alice7

+0

Le% est doublé pour une utilisation dans un fichier batch, ils ne devraient pas être doublé si elle a été directement sur une ligne de commande. – brianary

Questions connexes