我有一个批处理文件,它使用这个习语(很多次)将注册表值读入环境变量:
FOR /F "tokens=2* delims= " %%A IN ('REG QUERY "HKLM\SOFTWARE\Path\To\Key" /v ValueName') DO SET MyVariable=%%B
(后面有一个制表符delims=
)
这在数千台客户的计算机上运行良好。但在一位客户的计算机上(运行 Windows Server 2003,启用命令扩展),
它失败了,'REG QUERY "HKLM\SOFTWARE\Path\To\Key" /v ValueName'
无法识别为内部或外部命令、可运行程序或批处理文件。reg query
单独运行“ ”命令可以正常工作。Reg.exe
存在于C:\Windows\System32
.
我能够通过将代码更改为来解决该问题
REG QUERY "HKLM\SOFTWARE\Path\To\Key" /v ValueName > temp.txt
FOR /F "tokens=2* delims= " %%A IN (temp.txt) DO SET MyVariable=%%B
这让客户启动并运行,但我想了解问题发生的原因,以便将来避免它。
稍微偏离主要主题 - 将注册表值(字符串或 DWORD)获取到环境变量中的更直接方法也将很有用。