一个 script.bat 能否修改 Windows 的 PATH 环境变量?

17

我正试图编写一个脚本,点击后将在Windows中向PATH环境变量添加几个条目,而不是手动进行更改。我经常看到Windows上使用.bat文件来实现各种功能,那么像这样的事情是否可以借助.bat脚本完成呢?

实际上,我需要从Internet上的某个位置下载zip文件,将其提取到指定位置,然后更新环境变量中的PATH。以前从未做过这种事情,所以任何提示都会很有帮助。

1个回答

38

1
我尝试了这个,%PATH%(系统变量)的值被添加到“C:\New Folder”之前。到目前为止还不错。然而,它被保存为用户路径变量。路径变量由系统路径添加到用户路径组成。结果是所有系统路径目录都出现了两次,“C:\New Folder”被固定在末尾。下一次尝试附加内容时,您会得到系统目录3次,以此类推... - Julian Mann
5
您可能需要使用 /M 开关,它会设置系统环境而非用户环境。多次运行该命令肯定会重复信息,因为 %PATH% 是一个变量,引用您刚刚修改的当前环境 - 它附加数据,不是用于多次修改的。我建议手动编辑路径变量以删除重复项 http://www.computerhope.com/issues/ch000549.htm 然后只运行一次命令。如果使用 /M 标志,请确保具有管理员权限执行命令。 - Marcus Pope
@Marcus 谢谢提供信息。在我的情况下,我将批处理脚本提供给没有管理员权限的用户,以便他们可以将其路径设置为指向我的软件。在基于Unix系统的bash中,这是相当容易做到的。如果变量不存在,则设置它,否则追加到它上面。而在Windows上,PATH由两个部分组成,这会导致问题。 - Julian Mann
4
警告! SETX非常危险,因为它将路径截断为1024个字符(是的,我们已经到了2017年,Windows 10)。 对我来说,使用它使我丢失了部分路径和2个小时的时间。除非您在寻找麻烦,否则这不是一个合适的解决方案... - SSIsyphe
1
不,不,再说一遍不。这行代码会破坏用户的路径环境变量PATH。它使用本地的PATH和系统中所有文件夹路径的PATH以及用户中所有环境变量扩展后的PATH来设置用户的PATH,并将C:\New Folder添加到其中。这行代码非常糟糕,任何看到这个答案的人都不应该使用它。绝对不能使用本地的PATH来设置用户或系统的PATH,永远都不行。 - Mofi
有关如何修改持久存储的 usersystem PATH 的更多信息,请参见例如 为什么使用 SetX 时其他文件夹路径也会添加到系统 PATH 中,而不仅仅是指定的文件夹路径?将当前目录永久添加到 Windows 路径中如何在环境变量 PATH 中搜索和替换字符串? 以及这些答案所引用的所有内容。 - Mofi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接