【问题标题】:Same command, different results (command line or batch)相同的命令,不同的结果(命令行或批处理)
【发布时间】:2012-05-30 13:39:39
【问题描述】:

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

REG ADD "HKCU\Software\Microsoft\Office\12.0\Common\DRM" /v "AdminTemplatePath" /t REG_EXPAND_SZ /d ^%LocalAppData^%\Microsoft\DRM\Templates /f

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

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

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

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

有人知道保持环境变量不变、运行批处理文件的技巧吗?

谢谢。

【问题讨论】:

    标签: batch-file escaping registry environment-variables command-prompt


    【解决方案1】:

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

    试试双倍百分比,用双引号括起来:

    ^%LocalAppData^%\Microsoft\DRM\Templates
    

    应该是

    "%%LocalAppData%%\Microsoft\DRM\Templates"
    

    查看http://www.robvanderwoude.com/escapechars.php 了解有关批处理脚本中转义字符的更多信息

    【讨论】:

    • 谢谢。问题解决了。也感谢资源网站:)
    猜你喜欢
    • 2015-07-20
    • 2018-04-23
    • 1970-01-01
    • 2016-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-07
    • 1970-01-01
    相关资源
    最近更新 更多