我有一个批处理文件,使用这个习惯用法(很多次)将注册表值读入环境变量:
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)添加到环境变量中的更直接方法也很有用.