Ser*_*Ala 67 windows cmd path setx
我想使用修改Windows PATH变量setx.以下在Windows 8上至少有50%的时间可以正常工作:
setx PATH %PATH%;C:\Python27\;C:\Python27\Scripts\
Run Code Online (Sandbox Code Playgroud)
如果它给出错误"默认参数只能使用2次",那么下面的部分时间会起作用:
setx PATH "%PATH%;C:\Python27\;C:\Python27\Scripts\"
Run Code Online (Sandbox Code Playgroud)
不同之处在于我们将第二个参数包装在引号中.我相信%PATH%扩展包含空格时引号是必要的.
但是,我在Windows 7上遇到了一些奇怪的问题.在一台特定的Windows 7机器上,我遇到了这个问题:
echo %PATH%
Run Code Online (Sandbox Code Playgroud)
它打印:
C:\Foo\;C:\Bar\;[...lots of stuff...]C:\Baz\
Run Code Online (Sandbox Code Playgroud)
然后我这样做:
setx PATH "%PATH%;C:\Quux\"
Run Code Online (Sandbox Code Playgroud)
然后它说"错误:截断1,024个字符." 现在让我们检查一下PATH包含的内容:
echo %PATH%
Run Code Online (Sandbox Code Playgroud)
它打印:
C:\Foo\;C:\Foo\;C:\Bar\;C:\Bar\;[...lots of stuff, now duplicated...]C:\B
Run Code Online (Sandbox Code Playgroud)
......它被裁减为1,024个字符.由于重复,它跑了过来.同样有趣的是:尽管setx引发了错误而没有说"成功" ,但PATH的价值也发生了变化.
我能够多次重复这种奇怪的行为(幸运的是我保存了PATH的原始内容).
目前,我知道附加到PATH的唯一可靠方法如下:
echo 路径.
将PATH的内容复制到文本文件中,然后手动添加;C:\Python27\;C:\Python27\Scripts\到PATH的末尾.
将整个事物复制出文本文件.
setx PATH "<paste the string here>"
该过程在Windows 7和Windows 8上每次都有效.
我应该能够在一个命令中做到这一点.我究竟做错了什么?
谢谢.
Vit*_*uel 69
cmd以管理员身份运行,然后:
setx /M PATH "%PATH%;<your-new-path>"
Run Code Online (Sandbox Code Playgroud)
/ M选项将变量设置为SYSTEM范围.默认行为是为USER设置它.
TL; DR
发生截断问题是因为当您回显%PATH%时,它将显示SYSTEM和USER值的串联.因此,当您在setx的第二个参数中添加它时,它将适合USER var中的SYSTEM和USER值.当你再次回声时,事情会加倍.
此外,/ M选项需要管理员权限,因此您需要使用"以管理员身份运行"打开终端,否则setx将抱怨"拒绝访问注册表路径".
最后要注意的事项:当您以这种方式设置回显%PATH%后,您将看不到新值,您需要关闭cmd并再次打开.
如果要检查存储在注册表中的实际值,请检查此问题.
Man*_*ddy 13
这非常有效:
for /f "usebackq tokens=2,*" %A in (`reg query HKCU\Environment /v PATH`) do set my_user_path=%B
setx PATH "C:\Python27;C:\Python27\Scripts;%my_user_path%"
Run Code Online (Sandbox Code Playgroud)
第一个命令获取USER环境变量'PATH',变为'my_user_path'变量第二行前置'C:\ Python27; C:\ Python27\Scripts;' 到USER环境变量'PATH'
如果有人想在PowerShell中运行它,如下所示,
以管理员身份运行Powershell
然后
setx /M PATH "$Env:PATH;<path to add>"
Run Code Online (Sandbox Code Playgroud)
要进行验证,请打开另一个Powershell并查看以下PATH,
$Env:PATH
Run Code Online (Sandbox Code Playgroud)
如果您不喜欢setx,您可以使用替代命令行工具,例如pathed。在https://superuser.com/questions/297947/is-there-a-convenient-way-to-edit-path-in-windows-7/655712#655712有更全面的替代 PATH 编辑器列表
您还可以直接编辑注册表值,这就是它的setx作用。更多内容在这个答案中中。
奇怪的是你的字符%PATH%被截断为 1024 个字符。我以为setx没有这个问题。尽管您可能应该清理无效的路径条目。
| 归档时间: |
|
| 查看次数: |
143156 次 |
| 最近记录: |