相同的命令,不同的结果(命令行或批处理)



我一直在尝试创建一个非常简单的窗口脚本,它几乎可以工作("几乎"解释了我在这里的存在......我想链接几个命令。其中之一是用于添加注册表项。我已经找到了如何使用以下命令来解决问题的方法:

REG ADD "HKCUSoftwareMicrosoftOffice12.0CommonDRM" /v "AdminTemplatePath" /t REG_EXPAND_SZ /d ^%LocalAppData^%MicrosoftDRMTemplates /f

我想添加一个名为"AdminTemplatePath"的键,其值为"%LocalAppData%\Microsoft\DRM\Templates"。

问题与环境变量 %LocalAppData% 有关。当我做REG ADD /?时,它说我必须在每个"%"之前加上"^"才能使命令行工作(没有"^",变量将被解释并替换为其绝对值)。

当我在提示符中键入完整命令时,一切正常。我在值字段中有"%LocalAppData%\Microsoft\DRM\Templates"。当我将此命令复制/粘贴到我的批处理文件中时,运行时没有问题。系统告诉我一切都很好。但实际上,该值是"^\Microsoft\DRM\模板"或"\Microsoft\DRM\模板"。

当我删除完整命令中的"^"并重试时,值为"C:\Users\My User\AppData\Local\Microsoft\DRM\Templates"。

有谁知道保持环境变量原样运行批处理文件的技巧?

谢谢。

^ 应该是批处理脚本中的转义字符,但我也一直遇到麻烦。

相反,请尝试用双引号括起来的双倍百分比:

^%LocalAppData^%MicrosoftDRMTemplates

应该是

"%%LocalAppData%%MicrosoftDRMTemplates"

查看 http://www.robvanderwoude.com/escapechars.php 以获取有关批处理脚本中转义字符的详细信息

最新更新