Переменная среды слишком велика в Windows 10


147

Я знаю, что это странно, и я потратил почти 3 дня на поиски решения в Интернете, не получив полезного. Поэтому я решил приехать сюда.

Я недавно обновился до Windows 10 с Windows 8.1.

Теперь я хотел установить переменную Environment для моей новой установки Apache Maven.

Каждый раз, когда я создавал пользовательскую переменную, все в порядке. Однако мне также необходимо создать системную переменную, в которой мне нужно будет добавить каталог bin в переменную, которую я, возможно, создаю в пользовательской переменной как «путь».

Теперь, каждый раз, когда я делаю это, я получаю ошибку, которая говорит: «Эта переменная среды слишком велика. В результате я не могу создать путь.

Я приложил изображение этой ошибки.

Я буду признателен, если кто-нибудь может помочь мне решить эту проблему.

Спасибо заранее за помощь.введите описание изображения здесь


14
Я надеюсь, что они исправят это когда-нибудь. Этого никогда не должно случиться. ^^
itmuckel

1
Правильным решением для приложений является прекращение неправильного использования PATHпеременной среды. Правильное решение существует уже почти 2 десятилетия . Но заставить разработчиков использовать его - все равно что вырывать зубы.
Ян Бойд

Ответы:


148

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

Решение 1:

  1. Создайте новую системную переменную, скажем, «NEWPATH»
  2. Назначьте местоположение каталога мусорной корзины 'NEWPATH'
  3. Теперь добавьте ' ; % NEWPATH% 'к переменной PATH

Если это по-прежнему не работает, попробуйте скопировать некоторую часть уже существующих значений переменной PATH в «NEWPATH», а затем добавить «NEWPATH».

Решение 2:

Проверьте значение переменной PATH, если вы можете группировать и сокращать пути. Например,

C: \ Program Files \ Microsoft SQL Server \ 102 \ Tools \ Binn \; C: \ Program Files \ Microsoft SQL Server \ 102 \ DTS \ Bin \;

может быть объединен с

C: \ Program Files \ Microsoft SQL Server;

Таким образом, вы можете создать больше места в переменной PATH фиксированной длины и, наконец, настроить местоположение каталога bin в PATH.

Надеюсь, это поможет вам!


Да, вы очень правы. Так много исследований показали, что переменная пути может принимать только 2048 символов, и когда символы достигают этой стадии, переменная пути больше не сможет принимать много символов. Итак, я попробовал то, что вы предложили, и теперь я в порядке. Спасибо
оламми

Спасибо! Это отличная идея @ решение 1! Должен был подумать об этом сам ... :)
Dev-

2
Это работает как шарм, спасибо! Однако при использовании следует соблюдать осторожность, setx PATHтак как это непосредственно разрешит, %NEWPATH%а результирующая строка снова будет слишком длинной ... Таким образом, при таком подходе должен использоваться только диалог, а не командная строка
IceFire

1
@SwapnilKamat Это не совсем работает: я использую miktex, pdflatexон должен быть в PATH, если я помещаю местоположение pdflatexв NEWPATH, pdflatexон больше не найден («команда pdflatexне распознана» ...)
Olorin

7
По иронии судьбы, Microsoft SQL Server установил так много переменных пути, что он один почти заполнил пространство. Я создал переменную PATHS_MSSQL, а затем добавил% PATHS_MSSQL% в переменную PATH, чтобы занять их место. Освободил много места в переменной PATH.
Стив Ллойд

49

Есть несколько способов очистить переменную пути. Самый простой - использовать Rapid Environment Editor . Эта бесплатная утилита будет,

  1. Удалите повторяющиеся пути (щелкните правой кнопкой мыши> Пути очистки)
  2. Удалите несуществующие папки (показаны красным, которые необходимо удалить вручную)
  3. Замените длинные пути на короткие пути (щелкните правой кнопкой мыши> длинный путь на короткий путь).

Я делаю вышеуказанные шаги по порядку и использую 3-й шаг только для самых длинных путей, пока размер переменной пути снова не будет под контролем.

Если вы хотите продвинуться дальше, вот небольшой инструмент C #, который вы можете изменить в соответствии с любой другой логикой, которую вы хотите реализовать.


До прочтения этого поста я никогда не слышал ни об одном инструменте, но рад, что у меня есть! Спасибо, что поделился!
Джеймс Шоу

2
Этот инструмент потрясающий! MS должен сделать это официальным редактором, который идет с окнами!
Burzum

35

Другое решение или обходной путь для обхода ограничения переменной длины PATH для среды - это управление вашим путем (добавление, удаление или обновление) с помощью PowerShellсценария;

  1. Захватите текущую переменную PATH, нажав «Редактировать текст» (см. Скриншот выше), скопируйте ее в буфер обмена и сохраните в текстовом файле как резервную копию, чтобы избежать неприятных сюрпризов. Это не обязательно, но позволит вам восстановиться, если что-то пойдет не так.

  2. Теперь, когда для него выполнено резервное копирование, добавьте следующее в новый файл PowerShell (.ps1) (исправив в первой строке ниже пути к папкам, которые вы хотите добавить (часть после знака +):

    $ newPath = $ env: Path + '; C: \ Users .... \ FirstFolderToAddToPath; C: \ Users .... \ SecondFolderToAddToPath;»

    [Environment] :: SetEnvironmentVariable ("Путь", $ newPath, "Машина")

    $ env: Path = $ newPath

Вот так мне удалось вернуть свою (длинную) переменную PATH после игры с интерфейсом Windows 10, будучи пойманным из-за ограничения длины и потеряв большую часть моего пути. Я надеюсь, что это помогает.


Спасибо .. Это было легко. Любопытно, в чем разница между присвоением значения в строках 2 и 3
Nayak

Строка 3 устанавливает его в текущем сеансе, строка 2 устанавливает его как аппарат по умолчанию.
Тецуджин но Они

2
PS работает на более длительный путь , но традиционные setx /mУсекает 1048 символов :( Вы можете также редактировать путь в текстовом редакторе и просто сделать. [Environment]::SetEnvironmentVariable("Path", '\my\new;path1', "Machine")Вам нужно администратора оболочки..
Shital шаха

Можно использовать PS, но не используя GUI. Хм, как это имеет смысл? Спасибо, спасибо!
Легенды

11

В дополнение к ответу Swapnil, обратите внимание, что вы можете изменить максимальную длину переменной Path, которая в противном случае ограничена 2048 символами (в то время как один путь имеет исторический предел в 206 символов). В Windows 10 этого можно добиться, установив для параметра LongPathsEnabledреестра значение 1, которое можно найти здесь:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem

Чтобы получить доступ к редактору реестра:, Windows Key+Rвведите Regedit.

Источник: https://superuser.com/a/1119980

Также взгляните на этот ответ SuperUser: https://superuser.com/a/1119980/327009

Обращаясь к комментарию ниже: ошибка «Переменная среды слишком велика» относится ко всей переменной, а не к одному добавляемому в данный момент пути.


19
Это точный совет? Максимальная длина переменной PATH (т.е. конкатенация нескольких путей ) составляет 2048 символов. 260 символов, которые вы упомянули, это максимальная длина одного пути . Они связаны, но не одинаковы.
Хенди Ираван

7

Поздний ответ, но я искал что-то подобное и оказался здесь. Я изменил все пути к переменным для программных файлов и программных данных (этот сохраняет как 1 символ, хотя и не так важно).

Для чего-то вроде nodejs я изменил нормальный путь

C: \ Program Files \ nodejs \

в

% ProgramFiles% \ nodejs \

Это можно сделать с помощью «C: \ Program Files (x86) \», а также с помощью «% ProgramFiles (x86)% \»

Это спасло мне несколько персонажей, но достаточно, чтобы перестать жаловаться, я чувствую.


7
Почему бы просто не использовать% x86% вместо «C: \ Program Files (x86)» и% x64% вместо «C: \ Program Files», похоже, это гораздо лучший способ уменьшить накладные расходы на символы.
Xorcist

1
@ Xorcist - хороший! Не имел представления об этом
mark1234

Я не думаю, что они существуют по умолчанию, но вы можете создать их самостоятельно.
Ярмарка Гавриила

Я также сделал это, я создал% PF% для "c: \ Program FIles" и использование его примерно в 20 раз позволило мне достаточно сократить путь.
LaBracca

@ Xorcist как это сделать путем создания другой переменной?
Демодава

5

Я нашел, что вы можете сделать через PowerShell.

[System.Environment]::SetEnvironmentVariable("PATH", "C:\Program Files (x86......etc.....", "Machine")

Итак, я взял существующую системную переменную PATH, вставил ее в блокнот, добавил новую вещь и вставил в бит C: \ Program Files, описанный выше. Путь обновлен. Готово.


4

Попробуйте изменить regedit, в моем случае это работает, когда длина более 3000.

Нажмите Win + Rи введите, regeditчтобы открыть regedit. Перейти Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environmentи изменить значение Pathвашего пути. И перезагрузите компьютер, он должен работать.


1
Это хорошо работает для меня. Я думаю, что это проще, чем другие методы.
Шалита Сенанаяка

1

Временное решение:

Пожалуйста, перезагрузите систему. После перезапуска системы PATH больше не пуст, но может урезаться до 2047 (4095) символов. Если перезапуск системы не помогает, пожалуйста:

Запустите c: \ windows \ system32 \ regedit.exe. Перейдите в куст реестра "HKLM \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ Environment". Очистите ненужные каталоги от ключа «Путь». Перезагрузите систему.

Примечание: в некоторых исключительных случаях, если система не может запуститься, пожалуйста:

Войдите в безопасный режим. Откройте командную строку и введите: reg add "HKLM \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ Environment" / v Путь / t REG_EXPAND_SZ / d ^% SystemRoot ^% \ system32; ^% SystemRoot ^% / е

Для получения более подробной информации: https://software.intel.com/en-us/articles/limitation-to-the-length-of-the-system-path-variable


Как увеличить лимит хотя бы 4095?
Дэн М.

1

В дополнение к другим методам (например, Powershell), я нашел приятный графический интерфейс «Rapid Environment Editor», который может обрабатывать большие текстовые значения.

https://www.rapidee.com/en/download


0

Очевидно, Rapid Environment Editor сделает это за вас (из ответа @shatil_shah), но вы также можете сократить пути до их версии "8dot3". Вы получите большой пробег только с этими двумя заменами:

C:\Program Files       --> C:\PROGRA~1
C:\Program Files (x86) --> C:\PROGRA~2

Если вы скопировали свой текущий путь в Блокнот, сначала выполните поиск и замену, C:\Program Files (x86)а затем C:\Progam Files.


-3

Workarround. Используйте Edit Text и редактируйте ваш PATH в текстовом редакторе


2
Я пытаюсь следовать вашему совету. В каком файле хранятся переменные среды на моем компьютере?
Ярмарка Гавриила

это просто текст. Откройте его с помощью блокнота
Кристоф Адамакис

@GabrielFair Вы должны были нажать на кнопку вызова Edit Textвместо открытия какого-либо файла.
AlexMelw
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.