2015-12-28 4 views
44

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

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

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

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

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

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

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

заранее спасибо за помощь. enter image description here

+6

Надеюсь, они исправит этот день. Этого никогда не должно быть. ^^ – itmuckel

ответ

53

Когда переменная 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.

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

+0

Добро пожаловать в наше сообщество Swapnil Kamat. – ehsan88

+0

Спасибо, Эхсан! –

+0

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

3

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

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

C: \ Program Files \ nodejs \

в

% ProgramFiles% \ nodejs \

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

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

+1

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

+0

@ Xorcist - хороший! Не знаю, что такое – mark1234

+0

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

5

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

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem 

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

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

Также посмотри на этом доступ привилегированного ответа: https://superuser.com/a/1119980/327009

+3

Является ли этот точный совет? Максимальная длина переменной PATH (т. Е. * Конкатенация нескольких путей *) составляет 2048 символов. 260 символов, которые вы упомянули, являются максимальной длиной * одного пути *. Они связаны друг с другом, но не то же самое. –

9

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

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

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

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

[Environment]::SetEnvironmentVariable("Path", $newPath, "Machine") 

$env:Path = $newPath 

Это, как мне удалось получить мою переменную (длинный) PATH назад после игры с Windows 10 UI, будучи пойманным ограничением длины и потери большую часть моего пути я надеюсь, что это помогает

..
+0

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

+0

Строка 3 устанавливает его в текущем сеансе, строка 2 устанавливает его как машину по умолчанию. –

+0

PS работает для более длинного пути, но традиционные 'setx/m' обрезают до 1048 символов :(Вы также можете редактировать путь в текстовом редакторе, а просто' [Environment] :: SetEnvironmentVariable («Путь», «\ my \ new; путь1» ', "Machine") '. Вам понадобится оболочка администратора. – ShitalShah

-1

Редактирование текста и редактирование PATH в текстовом редакторе

+0

Я пытаюсь следовать вашим советам. Каким файлом являются переменные среды, хранящиеся на моем компьютере? –

+0

это просто текст. Откройте его с помощью блокнота –

1

Обход проблемы:

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

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

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

Войти в безопасном режиме Откройте командную строку оболочки и тип: рег добавить "HKLM \ SYSTEM \ CurrentControlSet \ Control \ Диспетчер сеанса \ окружающей среды"/v Путь/т REG_EXPAND_SZ/d ^% SystemRoot ^% \ system32; ^% SystemRoot ^%/f

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

1

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

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

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

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

0

Добавление других ответов, если у вас есть редактор групповой политики в вашем окне, нажмите Winkey + R и писать gpedit.msc, в окне, которое появляется на левой стороне дерева, перейдите по ссылке:

Компьютера Конфигурация -> Административные шаблоны -> Система -> Файловая система и дважды щелкните «Включить длинные пути Win32» и установите значение «Включить». Возможно, потребуется перезагрузка, чтобы изменения вступили в силу.

Обратите внимание, что как человек, который создает инструмент для управления переменными среды для конкретного проекта, над которым я работаю, могу сказать, что переменные среды Windows довольно ошибочны, когда дело доходит до ссылки на переменные на переменные, которые уже ссылаются на другую переменную, тихий отстой и для правильного чтения этих переменных необходимо запустить приложение, которое считывает эти переменные с разрешением на эвакуацию (в качестве администратора), иначе оно будет читать переменные как% SOME_VARIABLE%/Folder1/Folder2. Вот почему я прекратил использовать эту функцию и использовал абсолютный путь, так как у меня есть множество переменных, заданных в переменных моего пользователя и системной среды для моей среды разработки. Я рекомендую не ссылаться на переменную, которая уже содержит ссылочную переменную из моего опыта, чтобы избежать подобных ситуаций.

Смежные вопросы