setx语法无效

时间:2013-06-20 13:57:12

标签: windows environment-variables ogre

我使用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).

4 个答案:

答案 0 :(得分:25)

您的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...

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

答案 1 :(得分:2)

命令提示符为您提供该错误,因为您忘记了引号。你应该输入:

setx OGRE_HOME “D:\Program Files\OgreSDK”

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

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

OR

reg query HKEY_CURRENT_USER\Environment

答案 2 :(得分:2)

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\""

答案 3 :(得分:1)

作为@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