13

Я столкнулся со странной проблемой - я не могу запустить Visual Studio или выполнить простые команды из командной строки, по-видимому, из-за слишком длинной переменной PATH. Теперь, когда я смотрю на это, я вижу, что многие компании добавили свои каталоги установки в переменную PATH.

Мне было интересно, почему эти компании добавили свои папки в путь (возможно, чтобы было проще выполнять их программы?), И которые необходимы и которые я могу удалить. Если я удалю некоторые из них, я не смогу запустить программы? (Вот то, что в настоящее время существует в пути)

3 ответа3

13

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

Большинство из них есть, поэтому, если для ярлыка не задан полный путь для "Цели", если "Старт в" не установлен в ярлыке правильно или запуск выполняется странным образом, их программа и ее части и части всегда найденный. Это Failsafe в большинстве ситуаций. Вы все еще хотите полностью протестировать любое использование любой программы, которую вы удалили.
Это также очень полезно для людей, которые вводят команды в CMDprompt, даже без CD компьютер будет сканировать каждое местоположение, пока программа с таким именем не будет найдена и запущена. Или любая другая команда с таким же именем :-)

Этот набор путей WAS (предшественник) ограничивался менее чем 255 (или 260) символами, которые давно изменились на 1024, а затем были исправлены обратно в эпоху server'03 для обработки 2048 и предположительно могли обрабатывать 8096 в некоторых системах, даже давно.

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

http://msdn.microsoft.com/en-us/library/windows/desktop/ms682653(v=vs.85).aspx здесь Microsoft говорит:

Msgstr "Максимальный размер пользовательской переменной среды составляет 32 767 символов. Нет технических ограничений на размер блока среды. Однако существуют практические ограничения в зависимости от механизма, используемого для доступа к блоку. Например, пакетный файл не может установить переменную, длина которой превышает максимальную длину командной строки. "

В этом месте ^ они указывают на место в реестре, которое содержит системные пути HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment .

CMDprompt и пакетное ограничение составляют 2048 символов после расширения, и говорят, что это в 4 раза больше, чем для более новых систем (нуждается в цитировании, потому что люди этого не видят)

Также см. Http://support.microsoft.com/kb/830473, где обсуждаются командная строка и длина пакета для более старых систем.

Чтобы убедиться, что записи там правильные, в вики есть следующее:
http://en.wikipedia.org/wiki/Environment_variable

% PATH% Эта переменная содержит разделенный точкой с запятой (не ставьте пробелы между ними) список каталогов, в которых интерпретатор команд будет искать исполняемый файл, соответствующий данной команде. Переменные среды, которые представляют пути, могут быть вложены в переменную PATH, но только на одном уровне косвенности. Если сама эта переменная среды подпути содержит переменную среды, представляющую путь, PATH не будет правильно расширяться при замене переменной.

Наличие всех дополнительных путей там немного замедляет определенные вещи, потому что тогда он вынужден искать во всех этих местах, прежде чем он сдастся. Использование полных путей при вызове элементов файла всегда будет быстрее, даже при пакетной обработке или использовании CMDprompt.

Использование старых соглашений DOSlike 8.3 - один из способов уменьшить размер, этот пакет https://stackoverflow.com/a/20362922 работает хорошо. не забудьте (снова) сделать резервную копию оригинальной строки. Смотрите также другие возможные решения по этому вопросу.

Вот как выглядит моя, было хуже.
% SystemRoot%\system32;% SystemRoot%;% SystemRoot%\System32\Wbem;% SYSTEMROOT%\System32\WindowsPowerShell\v1.0\; C:\Program Files (x86)\QuickTime\QTSystem\

Я бы быстро выбрал быстрое время, и программы AMD уже добавили туда расширенный путь, бросил его, у Adobee был один, ни один из них не имел значения для стандартных методов ярлыков / значков в графическом интерфейсе. Многие вещи можно удалить, затем протестируйте все функции. Если вы вызываете вещи, вводя приглашение CMD, удаление этих путей не будет работать.

9

На моем пути есть несколько переменных среды, связанных с разработкой программного обеспечения, и все они важны.

Вышеупомянутое решение не сработало бы для меня, поэтому я выбрал соединения каталогов:

  • Выберите несколько самых длинных путей в моем PATH (например, C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\)
  • Создайте небольшую папку для хранения моих соединений: c:\d\
  • Создайте короткие соединения для длинных путей:

mklink / jc:\d\sql "C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\"

Выполнение этого по 15 путям уменьшило мой PATH с 2045 до 1285 символов.

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

1

Несмотря на то, что максимально допустимый в пути путь намного длиннее, я нашел в Stack Overflow авторитетные ответы на эту тему (и ссылки Microsoft), в которых говорится, что будет работать максимальное значение расширенного пути в 2048 байт, и все, что дольше этого, вызовет проблемы. Под "расширенным" я подразумеваю, что любые переменные, обозначенные разделителями%, будут вставлены в свои значения, чтобы стать расширенным значением, а общая расширенная длина не должна превышать 2048 байтов. Я заметил, что типы проблем, которые это вызывает (начиная с Windows 7):

  • Не распознает пути в конце значения
  • Установка программного обеспечения или исправлений, изменяющих значение PATH, приводит к тому, что значение времени выполнения становится NULL, что приводит к тому, что все виды проблем в Windows, такие как все значки меню "Пуск", "Рабочий стол" и "Панель задач", теряют свои изображения и простые команды командной строки, такие как « команда ping "или" ipconfig "не распознает ошибки
  • Прикладные программы, использующие значения PATH, не работают

Лично я рекомендую другие операционные системы, кроме Windows, но если вы застряли на ней, вам придется потратить часы на удаление записей пути, тестирование, чтобы убедиться, что оно ничего не нарушает, и получить значение пути до 2048 байт.

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