В документации 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
Затем вы можете создать новую переменную среды, такую как:
SET P1=C:\this_is_a\long_path\that_appears\in_multiple_places
после чего ваши первоначальные пути становятся
%P1%\subdir1
%P1%\subdir2
Вы также можете разделить PATH на две части, создав новую переменную, скажем, NEWPATH
, содержащую лишние пути и ;%NEWPATH%
к переменной PATH.
Избегайте использования команды setx, поскольку она будет напрямую разрешать встроенные переменные окружения, а полученная строка снова будет слишком длинной.
Используйте скрипт PowerShell для установки PATH
PowerShell напрямую вызывает Windows API и поэтому может приблизиться к теоретическому пределу в 32 767 символов для переменной среды.
Скрипт может содержать такие команды, как:
[Environment]::SetEnvironmentVariable("Path", $longpath, "Machine")