【问题标题】:Invalid syntax with setxsetx 语法无效
【发布时间】:2013-06-17 10:09:34
【问题描述】:

我使用setx命令设置OGRE_HOME

setx OGRE_HOME D:\Program Files\OgreSDK

现在我需要更改为OGRE_HOME 的值。 如何搜索我设置的所有值? 如果我再次运行该命令,它会显示:

ERROR: Invalid syntax. Default option is not allowed more than '2' time(s).

【问题讨论】:

  • 不确定但要查看所有值,请使用set

标签: windows environment-variables ogre


【解决方案1】:

你的 Ogre SDK 路径中有一个空格字符,它被解释为另一个参数的分隔符。用" 包围您的路径,将其作为setx 的一个参数:

setx OGRE_HOME "D:\Program Files\OgreSDK"

查看OGRE_HOME 环境变量的当前值:

echo %OGRE_HOME%

如果您设置了值,您可能必须打开一个新的命令提示符 shell 才能查看该值,然后尝试立即查看它的值。

要查看所有当前设置的环境变量,只需运行:

set

要仅显示具有特定前缀的环境变量(因此FOO 将显示FOOBARFOOBAZ),请将前缀放在set 之后:

set PREFIX

或者,您可以使用 GUI 编辑环境变量(假设这里是 Windows 7)。

  • 右击Computer,选择Properties
  • 点击左侧窗格中的Advanced system settings
  • 确保您位于弹出对话框中的Advanced 选项卡上
  • 点击底部Environment Variables...

将弹出一个对话框,其中包含您的用户特定环境变量以及系统范围的环境变量。选择一个值并使用新建/编辑/删除按钮与它们进行交互。

【讨论】:

  • 非常感谢。而且我永远不会在带有空格字符的路径上安装软件,因为它可能会遇到一些我们难以检查的问题。
  • 请注意,如果您使用 %PATH%(用于附件),则还需要 ""。
【解决方案2】:

命令提示符给你这个错误是因为你忘记了引号。你应该输入:

setx OGRE_HOME “D:\Program Files\OgreSDK”

要查看您已设置的所有值,请输入:

reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"

reg query HKEY_CURRENT_USER\Environment

【讨论】:

    【解决方案3】:

    setx 和几乎所有 Windows 命令行命令都对某些特殊字符敏感。其中有空格字符,但也有用于分隔条目的引号。

    正如@ajp15243 已经说过的,您可以通过锁定两个引号之间的路径来处理空格。但是,如果您有路径并且这些路径已经有引号,因为它们带有空格怎么办?这是一个例子:

    MY_PATHS="c:\Program Files\path1";"c:\Program Files(x86)\Path2"
    

    在这种情况下,当您使用 setx 时,您必须为那些内引号添加转义字符,否则它会混淆并给出您列出的错误。例如:

    setx -m MY_PATHS "\"c:\Program Files\path1\";\"c:\Program Files(x86)\Path2\""
    

    【讨论】:

      【解决方案4】:

      作为@ajp15243's answer 的附录。如果您对 PowerShell 而不是命令提示符或批处理文件执行相同操作,则需要使用前导转义双引号字符调用 SETX,如:

      $my_path = "%PROGRAMFILES%\MySQL\MySQL Server 5.7\bin\"
      $hkcu_path = (Get-ItemProperty hkcu:\Environment).PATH + ";" + $my_path
      SETX PATH "`"$hkcu_path" # note the leading escaped quote
      

      但是,这样做可能会导致在hkcu:\Environment\PATH 的值中添加尾随双引号,因此您可能也需要这样做:

      $dirty_path = (get-itemproperty hkcu:\Environment).PATH
      $clean_path = $dirty_path -replace '"',''
      SETX PATH $clean_path
      

      【讨论】:

        猜你喜欢
        • 2016-01-28
        • 2015-05-25
        • 1970-01-01
        • 2016-04-01
        • 1970-01-01
        • 2019-03-19
        • 2016-01-11
        • 2012-10-13
        • 1970-01-01
        相关资源
        最近更新 更多