如何从批处理文件中读取注册表字符串值

5

我想从批处理文件中读取注册表字符串值,然后将读取的值分配给变量。 我尝试了以下代码:

FOR  %%a in ('REG QUERY HKLM\SOFTWARE\MathWorks\MATLAB\7.10 /v MATLABROOT') DO set MATLAB=%%a
echo %MATLAB% 
但它不能正常工作。

可能是重复的问题:如何在批处理脚本中获取注册表键的值? - Pondlife
2个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
7

如果值的名称(在本例中为baz)不包含空格,则可以执行以下操作:

FOR /F "skip=4 tokens=2,*" %%A IN ('REG.exe query "HKLM\software\foo\bar" /v "baz"') DO set "MATLABROOT=%%B"
如果名称是动态的,并且只在运行时已知,您需要使用tokens=*并解析%% A,查找“REG_”以便知道数据从何处开始...

如果路径中有空格,很有可能会导致程序出现严重故障。 - Craig Ringer
@CraigRinger:2,* 表示 %%B 变成了该行的其余部分。更大的问题是像 skip=4 这样的东西,因为它取决于操作系统版本等等。无论你做什么,在批处理文件中做这种事情都会很糟糕... - Anders
2
很奇怪,不是吗?你会认为在批处理文件中,“将注册表值存储到变量中”是最常见的需求之一。 - Craig Ringer

3

reg 打印出的不仅仅是您感兴趣的值。据我所见,将 skip=2tokens=3 选项传递给 for 可能会起作用。

如果有比预期更多的空格,则可能需要更加详细的处理。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,