我想使用修改Windows PATH变量setx
。在Windows 8上,以下至少50%的时间有效:
setx PATH %PATH%;C:\Python27\;C:\Python27\Scripts\
如果出现错误“默认参数只能使用2次”,则在某些情况下以下工作:
setx PATH "%PATH%;C:\Python27\;C:\Python27\Scripts\"
区别在于我们将第二个参数用引号引起来。我认为引号在%PATH%
扩展为包含空格时很有必要。
但是,我在Windows 7上遇到了一些奇怪的问题。在一台特定的Windows 7计算机上,我遇到了以下问题:
echo %PATH%
它打印:
C:\Foo\;C:\Bar\;[...lots of stuff...]C:\Baz\
然后我这样做:
setx PATH "%PATH%;C:\Quux\"
然后显示“错误:截断了1,024个字符。” 现在,让我们检查一下PATH包含哪些内容:
echo %PATH%
它打印:
C:\Foo\;C:\Foo\;C:\Bar\;C:\Bar\;[...lots of stuff, now duplicated...]C:\B
...并且被截断为1,024个字符。由于重复,它跑了过来。同样有趣的是:尽管setx
存在错误并且没有说“成功” ,但PATH的值仍在变化。
我能够重复几次这种奇怪的行为(幸运的是,我已经保存了PATH的原始内容)。
目前,我知道追加到PATH的唯一肯定方法是:
echo
路径。将PATH的内容复制到文本文件中,然后手动添加
;C:\Python27\;C:\Python27\Scripts\
到PATH的末尾。将整个内容复制出文本文件。
setx PATH "<paste the string here>"
该过程在Windows 7和Windows 8上每次都有效。
我真的应该能够在一个命令中做到这一点。我究竟做错了什么?
谢谢。
setx
出于另一个原因,使用是危险的:如果路径包含任何环境变量(例如)%JAVADIR%\bin
,则引用将丢失,即,如果JAVADIR更改,则路径将不再随之更改。如果这是软件安装程序,则可能会破坏最终用户的计算机。这不是一个好主意。