3

сообщение об ошибке

Свойства системы

Эта переменная среды слишком велика. Этот диалог позволяет устанавливать значения длиной до 2047 символов.

Я использую / использовал много программного обеспечения, и в результате мой PATH вырос. Когда я пытаюсь добавить новые пути, я получаю сообщение выше. В качестве обходного пути я редактирую свой путь пользователя, но предпочитаю не делать этого.

1 ответ1

1

В документации 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")

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .