使用批处理文件将路径添加到环境变量中(Windows 10)

3
我正在尝试创建一个批处理文件,自动将我的Python文件夹添加到环境路径中。以下是在运行该文件之前的环境变量。enter image description here 这是我运行的文件(请注意,bat文件与python文件夹位于同一目录中):
@echo OFF
setx path "%path%;%cd%\Python36"

这个文件将Python添加到了系统路径中(参见红线),但也将许多其他文件夹添加到了路径中(蓝色圆圈)。我不知道为什么会这样。如果有帮助的话,非常感谢!enter image description here

3
在你更改PATH变量之前,所有这些路径都在现有的PATH变量中。它们非常标准。 - Squashman
1
下面的答案如何解决您的问题? - Squashman
@Squashman 当我运行第一个命令时,它提供的答案没有添加任何额外的文件。 - J.C
3
为什么你想要将 Python36 文件夹的路径添加到用户 PATH 中?为什么不将路径写入位于 "%APPDATA%\YourAppName\PythonPath.cfg" 的文件中,并从该文件中读取呢?或者,将 Python 路径添加到用户环境变量列表中,使用 setx MyAppPythonPath "%CD%\Python36" 命令,然后你的程序或脚本就可以使用环境变量 MyAppPythonPath,而不依赖于本地 PATHPATHEXT。又或者,将 Python 路径添加到注册表键 HKCU\Software\MyApp,并将值设置为 PythonPath,然后从 Windows 注册表中查询该注册表值。 - Mofi
显示剩余2条评论
1个回答

3
有几种不同的方法。
第一种是搜索Python,然后设置$PATH。
FOR /f %%p in ('where python') do SET PYTHONPATH=%%p
ECHO %PYTHONPATH%

第二步 - 如果您知道Python安装的位置,可以使用setx永久设置PATHPYTHONPATH
setx path "%path%;C:\Users\Admin\AppData\Local\Programs\Python\PythonVersion;"

我发现了一个非常强大的 PowerShell 脚本,用于安装 Python。只需要更新链接即可。

2
PowerShell脚本与大多数更新__user__或__system__环境变量PATH的脚本一样糟糕,因为它将注册表中的PATH替换为具有所有环境变量展开的__local__ PATH,并将__system__和__user__ PATH连接起来,而不检查要添加的文件夹路径是否已存在于__user__或__system__ PATH中。我只希望没有太多用户使用此PowerShell脚本,那些使用它的用户可能会遇到一些安装应用程序的问题。绝对不能使用__local__ PATH更新__user__或__system__ PATH - Mofi
谢谢您提供的信息。所以,问题不在于工具,而在于使用者?您有更好的例子可以让我们学习吗?我真的很好奇。@Mofi - Noah M.
2
在上面的答案中,First示例存在几个问题。它应该规定令牌或分隔符,应该更具体地指定WHERE要搜索的位置,应该规定扩展名,以防止匹配%PATHEXT%中的任何扩展名,并且应该包含双引号。无论是否缺少双引号,上面的Second示例在没有进一步信息/扩展的情况下完全没有意义。在我选择对您的答案进行负评之前,我会给您时间,@NoahM.,来解决这些问题,因为它只是链接到其他网站。 - Compo
两者都来自Python官方文档。有趣。因此,最好建议其他人使用Python安装程序,如果他们不知道如何设置“PATH”或“PYTHONPATH”。我将编辑第二个的清晰度。谢谢。@Compo - Noah M.
@NoahM.,我知道原帖的提问者已经接受了你的答案,但是你最近的编辑不足以解决我上面指出的问题,即使你修复了这些问题,代码仍然无法回答这个问题。SET命令只在cmd.exe会话中本地有效。这意味着一旦你运行了其中任何一个示例,即使修复了问题,原帖的对话框也不会被改变/更新! - Compo

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