我使用了setx命令来设置OGRE_HOME:
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).
1tuwyuhd1#
您的Ogre SDK路径中包含空格字符,该字符被解释为另一个参数的分隔符。请用"将您的路径括起来,以将其作为setx的一个参数:
"
setx OGRE_HOME "D:\Program Files\OgreSDK"
要查看OGRE_HOME环境变量的当前值:
echo %OGRE_HOME%
如果您设置了该值,然后尝试立即查看其值,则可能必须打开新的命令提示符shell才能查看该值。要查看当前设置的所有环境变量,只需运行:
set
要仅显示具有特定前缀的环境变量(因此FOO将显示FOOBAR和FOOBAZ),请将该前缀放在set之后:
FOO
FOOBAR
FOOBAZ
set PREFIX
或者,您可以使用GUI编辑环境变量(这里假设是Windows 7)。
Computer
Properties
Advanced system settings
Advanced
Environment Variables...
将弹出一个对话框,其中包含用户特定的环境变量以及系统范围的环境变量。选择一个值,然后使用“新建”/“编辑”/“删除”按钮与它们交互。
flvlnr442#
命令提示符显示该错误,因为您忘记了引号。您应该键入:
要查看已设置的所有值,请输入以下任一项:
reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"
或
reg query HKEY_CURRENT_USER\Environment
uxhixvfz3#
setx和几乎所有的windows命令行命令都对某些特殊字符敏感。其中包括空格字符,但也有用来分隔条目的引号。正如@ajp15243所说,你可以通过锁定两个引号之间的路径{s)来处理空格,但是如果你有路径,而这些路径已经有引号了,因为它们带有空格呢?
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\""
7bsow1i64#
作为@ajp15243答案的补充,如果您使用PowerShell而不是命令提示符或批处理文件执行相同操作,则需要在调用SETX时使用一个转义双引号字符,如下所示:
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的值中添加一个尾随双引号,因此您可能也需要这样做:
hkcu:\Environment\PATH
$dirty_path = (get-itemproperty hkcu:\Environment).PATH $clean_path = $dirty_path -replace '"','' SETX PATH $clean_path
4条答案
按热度按时间1tuwyuhd1#
您的Ogre SDK路径中包含空格字符,该字符被解释为另一个参数的分隔符。请用
"
将您的路径括起来,以将其作为setx
的一个参数:要查看
OGRE_HOME
环境变量的当前值:如果您设置了该值,然后尝试立即查看其值,则可能必须打开新的命令提示符shell才能查看该值。
要查看当前设置的所有环境变量,只需运行:
要仅显示具有特定前缀的环境变量(因此
FOO
将显示FOOBAR
和FOOBAZ
),请将该前缀放在set
之后:或者,您可以使用GUI编辑环境变量(这里假设是Windows 7)。
Computer
,选择Properties
Advanced system settings
Advanced
选项卡Environment Variables...
将弹出一个对话框,其中包含用户特定的环境变量以及系统范围的环境变量。选择一个值,然后使用“新建”/“编辑”/“删除”按钮与它们交互。
flvlnr442#
命令提示符显示该错误,因为您忘记了引号。您应该键入:
要查看已设置的所有值,请输入以下任一项:
或
uxhixvfz3#
setx和几乎所有的windows命令行命令都对某些特殊字符敏感。其中包括空格字符,但也有用来分隔条目的引号。
正如@ajp15243所说,你可以通过锁定两个引号之间的路径{s)来处理空格,但是如果你有路径,而这些路径已经有引号了,因为它们带有空格呢?
在这种情况下,当你使用setx时,你必须为那些内引号加上转义字符,否则它会混淆并给予你列出的错误。
7bsow1i64#
作为@ajp15243答案的补充,如果您使用PowerShell而不是命令提示符或批处理文件执行相同操作,则需要在调用
SETX
时使用一个转义双引号字符,如下所示:但是,这样做可能会导致在
hkcu:\Environment\PATH
的值中添加一个尾随双引号,因此您可能也需要这样做: