我有一个使用这个成语(多次)来读取注册表值到一个环境变量的批处理文件:为什么迭代命令输出时批处理文件FOR失败?
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)获取到环境变量中的一种更直接的方式也很有用。
我确实已验证EnableExtensions已设置。我会编辑这个问题来说明这一点。 – 2008-10-08 15:51:10