Установлено ли в Windows 7 ограничение на путь к файлу в 255 символов?

92

Насколько я понимаю, ограничение 255 символов в пути к файлу - это ограничение Windows. В чем причина этого? Если да, то была ли эта проблема решена в Windows 7?

В наших практиках непрерывной интеграции мы часто имеем глубоко вложенные структуры проектов, и было бы чрезвычайно полезно иметь возможность превышать 255 символов. Сейчас мы в некоторой степени вынуждены структурировать наши проекты таким образом, чтобы не упираться в этот искусственный потолок.

Мэтт
источник
3
@DavidHeffernan Но этот 260 включает нулевой символ в конце и `C: \` в начале, поэтому можно использовать только 255 символов.
Аарон Дюфур
2
@DavidHeffernan Я ошибался. Microsoft часто указывает длину как 256, что вы получаете при правильном вычитании, а не как 260, что технически является пределом.
Аарон Дюфур
5
Меня эта проблема бесит. Он по-прежнему присутствует в Windows 8.1. Кажется, я не могу перемещать свои файлы, даже если КАК-ТО файл был создан изначально. Если вы найдете способ создавать файлы с более чем 255 именами путей к файлам, вы можете полностью испортить чью-то Windows-машину.
Automatico
По словам Джереми Куна, проблема уже прорабатывается и вскоре может быть решена. Смотрите это видео. youtube.com/watch?v=ZppqEMegCAA
Эдвард Эллис,
Вопрос касается Windows 7, но в любом случае в Windows 10 есть возможность включить длинные пути для некоторых приложений. Для получения дополнительной информации ознакомьтесь с этим ответом: stackoverflow.com/questions/27680647/…
quasoft

Ответы:

44

См. Http://msdn.microsoft.com/en-us/library/aa365247(VS.85).aspx

Это объясняет, что версии Unicode API Windows имеют более высокие ограничения, и способы их включения.

Дрю Хоскинс
источник
14
Но одно предупреждение: есть куча кода (в основном сторонние системные утилиты и т.п.), который не работает с более длинными путями. У вас могут возникнуть проблемы с этим, если вы начнете использовать более длинные пути.
ReinstateMonica Larry Osterman
2
Эта статья верна? Я провел простой тест с помощью проводника Windows и командной строки Windows в Windows 7, и я не могу создавать пути к файлам, содержащие более 260 символов. Разве Microsoft не обновила эти приложения для использования версий Unicode API Windows?
Templar
7
К сожалению, для проводника Windows в Windows 7 x64 все еще действует это ограничение пути. Это создает впечатление, что вся операционная система не преодолела этот предел, хотя на самом деле это просто проводник Windows, который не был обновлен для работы с более длинными путями. Вполне возможно, что сторонний файловый менеджер, использующий новейшие API, сможет обойти это. В конечном итоге, будет ли программа, по-видимому, достигнуть ограничения пути, будет зависеть от того, использует ли эта программа новейшие API-интерфейсы в Windows.
user1445967
2
Это не вопрос «новых» или «старых» API. Вы получаете поддержку длинного пути только в том случае, если вы явно просите об этом, а Explorer этого не делает, предположительно по очевидной причине: совместимость с существующими сторонними приложениями.
Гарри Джонстон
9
-1 - Ссылка на потенциальное решение всегда приветствуется, но, пожалуйста, добавьте контекст вокруг ссылки, чтобы ваши друзья-пользователи имели некоторое представление о том, что это такое и почему оно есть. Всегда указывайте наиболее релевантную часть важной ссылки на случай, если целевой сайт недоступен или постоянно отключен. meta.stackoverflow.com/tags/link-only-answers/info
Аарон Холл
20

Вы можете обойти это ограничение, используя subst, если вам нужно.

Джошуа
источник
5
подробнее здесь: microsoft.com/resources/documentation/windows/xp/all/proddocs/…
Крис Б.
1
Или robocopy, встроенный в Windows, на основе этого ответа, stackoverflow.com/questions/29865863/…
KAE
5
Вы должны продемонстрировать, как это сделать, и предоставить ссылку на соответствующую документацию. -1
Аарон Холл
3
Хотя я проголосовал за, я согласен, что пример был бы полезен: он помог мне пройти subst E: D:\TESTDATA\4B871B~1\4B871B~1\4B871B~1\4B871B~1\4B871B~1\4B871B~1\4B871B~1\4B871B~1\4B871B~1\4B871B~1\4B871B~1\4B871B~1\4B871B~1\4B871B~1\4B871B~1 путь глубиной в 500 символов. Причина появления ~ 1 - это способ форматирования пути проводником.
Адам Марчёнек
1
Аналогичное решение могло бы использовать соединения , либо через расширение оболочки, либо через mklink. Пример:mklink /J C:\newdir C:\some\really\long\path\
Charles Grunwald
14

Обходные пути не являются решениями, поэтому ответ - «Нет».

Все еще ищем обходные пути, вот возможные решения: http://support.code42.com/CrashPlan/Latest/Troubleshooting/Windows_File_Paths_Longer_Than_255_Characters

user1767754
источник
1
Основные элементы Windows, включая PowerShell, оболочку проводника Windows и утилиты cmd, такие как del, по-прежнему не могут обрабатывать пути, длина которых превышает 250 символов, и никакое обходное решение не устраняет тот факт, что основные технологии Microsoft не обрабатывают длинные пути, по состоянию на 2016 год. Краткий ответ здесь Пока Microsoft не задействует коллектив, мы мало что можем сделать.
Уоррен П.
4

@ Cort3z: если проблема все еще существует, это исправление: https://support.microsoft.com/en-us/kb/2891362 должно решить ее (с win7 sp1 до 8.1)

ale.com
источник
Это отличное решение. Были ли у вас проблемы после его использования?
Габриэль Фэйр
1

Начиная с Windows 10 версии 1607 ограничение было снято путем установки раздела реестра.

https://msdn.microsoft.com/en-us/library/aa365247%28VS.85%29.aspx?f=255&MSPPError=-2147217396#maxpath

чедабоб
источник
2
а не в windows 7?
gumuruh
На самом деле это не кажется разумным, потому что, хотя он не дает ответа на вопрос, он, вероятно, будет полезен многим людям, у которых есть похожие вопросы.
mwfearnley
Однако есть и другие вопросы, касающиеся Win10
mjs