Command line 尝试将命令的输出存储到变量,并尝试在批处理文件中进行匹配

Command line 尝试将命令的输出存储到变量,并尝试在批处理文件中进行匹配,command-line,batch-file,Command Line,Batch File,我正在尝试将变量设置为注册表路径。 然后查询注册表并尝试与变量匹配。如果两者相同,则转到执行。 但是由于某些原因,我得到了错误,看起来这个命令有一些问题 set var=HKEY_LOCAL_MACHINE\System\x IF reg query==var GOTO EXecute 你在那里做的只是比较字符串。命令解释器如何知道reg query是一个命令(除此之外,它本身不会产生太多有用的东西) 这里需要做的是执行程序,捕获其输出,然后进行比较。您可以使用for/f命令执行此操作:

我正在尝试将变量设置为注册表路径。 然后查询注册表并尝试与变量匹配。如果两者相同,则转到执行。 但是由于某些原因,我得到了错误,看起来这个命令有一些问题

set var=HKEY_LOCAL_MACHINE\System\x

IF reg query==var
GOTO EXecute 

你在那里做的只是比较字符串。命令解释器如何知道
reg query
是一个命令(除此之外,它本身不会产生太多有用的东西)

这里需要做的是执行程序,捕获其输出,然后进行比较。您可以使用
for/f
命令执行此操作:

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

但是,
reg
的输出是人类可读的,而不是机器可读的,因此您需要做一些工作才能正确执行。基本上,您需要忽略
for
语句中的空行以及标题行。。。然后你需要找到你感兴趣的实际价值。这会很快变得难看。

倍增的%用于批处理文件,如果直接在命令行中输入,则不应倍增。
for /f %%a in ('reg query ...') do if "%var%" == "%%a" goto Execute