当前位置:  开发笔记 > 开发工具 > 正文

为什么在迭代命令输出时批处理文件FOR会失败?

如何解决《为什么在迭代命令输出时批处理文件FOR会失败?》经验,为你挑选了0个好方法。

我有一个批处理文件,使用这个习惯用法(很多次)将注册表值读入环境变量:

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)添加到环境变量中的更直接方法也很有用.

推荐阅读
放ch养奶牛
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有