如何绕过对 PATH 变量长度的限制

Tob*_*fin 15 path environment-variables windows-10

错误信息

系统属性

这个环境变量太大了。此对话框允许设置长达 2047 个字符的值。

我使用/已经使用了很多软件,结果我的 PATH 增长了。当我尝试添加新路径时,我收到上述消息。作为一种解决方法,我正在编辑我的用户路径,但不想这样做。

har*_*ymc 17

Microsoft 的文档说 Windows 上的环境变量仅限于 32,767 个字符(链接),但没有说明如何创建这么长的变量。

这里的问题是 Windows 提供的工具都有其局限性:

  • set 和 setx 命令将值截断为 1023 个字符。

  • 直接在注册表中设置 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment 失败,因为 regedit 会在 2047 个字符之后截断输入的字符串。

所以你必须使用变通方法。

使用短文件夹名称

您可以使用 来查看此类名称dir /x /ad。以下示例显示,在我的计算机上,文件夹Program Files (x86) 可能被替换为PROGRA~2

在此处输入图片说明

使用嵌入式环境变量

如果你有:

C:\this_is_a\long_path\that_appears\in_multiple_places\subdir1
C:\this_is_a\long_path\that_appears\in_multiple_places\subdir2
Run Code Online (Sandbox Code Playgroud)

然后您可以创建一个新的环境变量,例如:

SET P1=C:\this_is_a\long_path\that_appears\in_multiple_places
Run Code Online (Sandbox Code Playgroud)

之后你的原始路径变成

%P1%\subdir1
%P1%\subdir2
Run Code Online (Sandbox Code Playgroud)

您还可以通过创建一个新变量将 PATH 一分为二,例如NEWPATH,包含多余路径并附;%NEWPATH%加到 PATH 变量。

避免使用 setx 命令, 因为它会直接解析嵌入的环境变量,并且生成的字符串将再次过长。

使用 PowerShell 脚本设置 PATH

PowerShell 直接调用 Windows API,因此可以接近环境变量 32,767 个字符的理论限制。

该脚本可能包含以下命令:

[Environment]::SetEnvironmentVariable("Path", $longpath, "Machine")
Run Code Online (Sandbox Code Playgroud)

  • 非常感谢。在所有这些中, %NEWPATH% 选项是最可口的,所以我想我会选择它。 (4认同)

小智 8

我试过这个。即使您面临这个问题,在遵循 @harrymc\xe2\x80\x99s 答案后它对我有用,请尝试这个。

\n

path2使用 中的所有内容创建一个新的path

\n

现在放置%path2%在路径内

\n

在此输入图像描述

\n

在此输入图像描述

\n

所以现在%path2%; %path3%; %path4%; ...等等。

\n