Змінна середовище занадто велика в Windows 10


147

Я знаю, що це дивно, і я витратив майже 3 дні на пошук рішення в Інтернеті, не отримуючи корисного. Тому я вирішив приїхати сюди.

Я нещодавно оновив до Windows 10 з Windows 8.1.

Тепер я хотів встановити змінну оточення для моєї нової установки Apache Maven.

Кожного разу, коли я створював змінну користувача, все добре. Однак мені також потрібно створити системну змінну, де мені потрібно буде додати каталог bin до змінної, яку я постійно створюю в користувацькій змінній, щоб бути "шлях".

Тепер, кожного разу, коли я роблю це, я отримую помилку, яка говорить: "Ця змінна середовище занадто велика. Внаслідок цього я не в змозі створити шлях.

Я додав зображення цієї помилки.

Я буду вдячний за це, якщо хтось може допомогти мені вирішити цю проблему.

Заздалегідь дякую за допомогу.введіть тут опис зображення


14
Я сподіваюся, що вони це виправлять через день. Це ніколи не повинно статися. ^^
itmuckel

1
Правильне рішення полягає в тому, щоб додатки зупиняли зловживання PATHзмінною середовища. Правильне рішення існує вже майже 2 десятиліття . Але змусити розробників використовувати його - це як тягнути зуби.
Ян Бойд

Відповіді:


148

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

Рішення 1:

  1. Створіть нову системну змінну скажіть "NEWPATH"
  2. Призначте розташування каталогу каталогів "NEWPATH"
  3. Тепер додайте ' ; % NEWPATH% 'до змінної PATH

Якщо це все ще не працює, спробуйте скопіювати частину змінної PATH вже існуючих значень у 'NEWPATH', а потім додайте 'NEWPATH'

Рішення 2:

Перевірте значення змінної PATH, якщо ви можете згрупувати та скоротити шляхи. Наприклад,

C: \ Програмні файли \ Microsoft SQL Server \ 102 \ Інструменти \ Binn \; C: \ Програмні файли \ Microsoft SQL Server \ 102 \ DTS \ Bin \;

можна комбінувати до

C: \ програмні файли \ Microsoft SQL Server;

Таким чином ви можете створити більше місця для змінної PATH з фіксованою довжиною і, нарешті, відрегулювати своє місце розташування каталогу BIN в PATH.

Сподіваюся, це допоможе вам!


Так, ви дуже правильні. Настільки багато досліджень показали мені, що змінна контура може приймати лише 2048 символів, і коли символи потраплять на цю стадію, змінна шлях більше не зможе прийняти багато символів. Тому я спробував те, що ви запропонували, і зараз я добре. Дякую
olammy

Дякую! Це відмінна ідея @ рішення 1! Я повинен був про це подумати сам ... :)
Dev-iL

2
Це працює як шарм, дякую! Однак потрібно бути обережними при використанні, setx PATHоскільки це безпосередньо вирішить %NEWPATH%і результуюча рядок буде знову занадто довгою ... Отже, використовуючи цей підхід, слід використовувати лише діалоговий і не командний рядок
IceFire

1
@SwapnilKamat Це не повністю працює: я використовую miktex, його pdflatexпотрібно мати PATH, якщо я поставив місце розташування pdflatexв NEWPATH, pdflatexйого більше не знайти ("команда pdflatexне розпізнається" ...)
Олорін

7
За іронією долі, Microsoft SQL Server встановив стільки змінних контурів, що лише він майже заповнює простір. Я створив змінну PATHS_MSSQL, а потім додав% PATHS_MSSQL% до змінної PATH, щоб зайняти їх місце. Звільнено багато місця в змінній PATH.
Стів Ллойд

49

Є кілька способів очищення змінної шляху. Найпростіший - використовувати швидкий редактор середовища . Ця безкоштовна утиліта,

  1. Видаліть повторювані контури (клацніть правою кнопкою миші> Очистити шляхи)
  2. Видаліть неіснуючі папки (показані червоним кольором, які потрібно видалити вручну)
  3. Замініть довгі шляхи короткими шляхами (клацніть правою кнопкою миші> довгий на короткий шлях).

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

Якщо ви хочете досягти більш досконалого, ось маленький інструмент C #, який ви можете змінити на будь-яку іншу логіку, яку ви хочете реалізувати.


Перш ніж прочитати цю публікацію, я ніколи не чув ні про один інструмент, але радий, що маю! Дякую, що поділились!
Джеймс Шоу

2
Цей інструмент є приголомшливим! MS повинні зробити його офіційним редактором, який постачається з Windows!
Burzum

35

Ще одне рішення або більше рішення для обходу обмеження довжини змінної довжини середовища PATH - це керування своїм шляхом (додавання, видалення або оновлення) за допомогою PowerShellсценарію;

  1. Захопіть поточну змінну PATH, натиснувши "Змінити текст" (див. Знімок екрана) та скопіюйте її у буфер обміну та збережіть у текстовому файлі як резервну копію, щоб уникнути поганих сюрпризів. Це не є обов'язковим, але дозволить відновитись, якщо щось піде не так.

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

    $ newPath = $ env: Шлях + '; C: \ Користувачі .... \ FirstFolderToAddToPath; C: \ Користувачі .... \ SecondFolderToAddToPath; '

    [Навколишнє середовище] :: SetEnvironmentVariable ("Шлях", $ newPath, "Машина")

    $ env: Шлях = $ newPath

Ось так мені вдалося повернути свою (довгу) змінну PATH після гри з інтерфейсом Windows 10, мене сприймає обмеження довжини та втрачає більшу частину мого шляху. Я сподіваюся, що це допомагає.


Спасибі .. Це було легко. Цікаво, яка різниця між присвоєнням значення у рядку 2 та 3
Наяк

Рядок 3 встановлює його в поточному сеансі, а рядок 2 встановлює його за умовчанням для машини.
Tetsujin no Oni

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

Можна використовувати PS, але не використовувати графічний інтерфейс. Гм, як це має сенс? Оновлено, дякую!
Легенди

10

На додаток до відповіді Swapnil, зауважте, що ви можете змінити максимальну довжину змінної Шлях, яка в іншому випадку обмежена 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: \ програмні файли \ nodejs \

до

% ProgramFiles% \ nodejs \

Це можна зробити за допомогою програми "C: \ Program Files (x86) \", використовуючи "% ProgramFiles (x86)% \"

Це врятувало мене декількох персонажів, але достатньо, щоб я перестав скаржитися на почуття.


7
Чому б просто не використовувати% x86% для заміни "C: \ Program Files (x86)" і% x64% для заміни "C: \ Program Files", схоже, це набагато кращий спосіб зменшити накладні символи.
Xorcist

1
@Xorcist - приємний!
Поняття

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

Мені також це подобалось, я створив% 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
Для мене це добре працює. Я думаю, що це легко, ніж інші методи.
shalitha senanayaka

1

Обхід:

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

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

Примітка. У деяких виняткових випадках, якщо система не може запустити, будь ласка:

Увійти в безпечний режим Відкрийте командний рядок і введіть: reg додайте "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), я знайшов чудовий графічний інтерфейс, "Швидкий редактор середовища", який може обробляти більші текстові значення.

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


0

Мабуть, швидкий редактор довкілля зробить це за вас (з @shatil_shah відповіді), але ви також можете скоротити шляхи до їх "8dot3" версії. Ви отримаєте багато пробігу за допомогою цих двох замін:

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

Якщо ви скопіюєте поточний шлях у Блокнот, спочатку знайдіть і замініть, C:\Program Files (x86)а потім C:\Progam Files.


-3

Робоче коло. Використовуйте редагування тексту та відредагуйте свій PATH у текстовому редакторі


2
Я намагаюся дотримуватися ваших порад. У якому файлі зберігаються змінні довкілля на моєму комп’ютері?
Ярмарок Габріеля

це просто текст. Відкрийте його за допомогою блокнота
Крістоф Адамакіс

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