Варианты решения
Вариантов решения видел 2:
1. Перенести xampp в голову диска
2. Создать алиас для этого пути (Например диск с именем H)
Второй вариант показался более простым, ведь для xampp пути не поменяются, а gitом будем заходить в папки через созданный алиас. Ну еще для правильной работы IDE придется изменить путь проектам.
И так, для того чтобы Windows подставляла вместо Вашего длинного пути, имя диска — выполняем через cmd команду:
Subst H: C:\Users\\Documents\xampp\htdocs\git\
Многим пользователям ПК под управлением ОС Windows, не говоря о разработчиках, знакомы проблемы при работе с длинными (более 260 символов, MAX_PATH) путями файлов или каталогов.
В данной статье рассматриваются способы избавления от этого пережитка при разработке приложений на различных платформах (WinApi, .Net Framework, .Net Core) и активации нативной поддержки длинных путей в Windows 10 (Anniversary Update).
Приложения Win API
В Windows 10 (1607) поведение функций для работы с файлами изменилось: появилась возможность отключить проверку ограничений MAX_PATH на уровне системы.
Это коснулось следующих функций:
Для работы с каталогами:
CreateDirectoryW, CreateDirectoryExW, GetCurrentDirectoryW, RemoveDirectoryW, SetCurrentDirectoryW. И для работы с файлами:
CopyFileW, CopyFile2, CopyFileExW, CreateFileW, CreateFile2, CreateHardLinkW, CreateSymbolicLinkW, DeleteFileW, FindFirstFileW, FindFirstFileExW, FindNextFileW, GetFileAttributesW, GetFileAttributesExW, SetFileAttributesW, GetFullPathNameW, GetLongPathNameW, MoveFileW, MoveFileExW, MoveFileWithProgressW, ReplaceFileW, SearchPathW, FindFirstFileNameW, FindNextFileNameW, FindFirstStreamW, FindNextStreamW, GetCompressedFileSizeW, GetFinalPathNameByHandleW.
.Net Framework
Вот что это даёт:
- При использовании префикса “\\?\” мы можем работать с длинными путями как в Win API, Directory.CreateDirectory(«\\\\?\\» + long_dir_name);
- Если активировать нативную поддержку длинных имен файлов Windows 10 (1607), то даже не потребуется использовать префикс!
Как включить:
- Использовать.Net Framework 4.6.2 как цель при сборке приложения.
- Использовать конфигурационный файл, например, если приложение уже было собрано под.Net 4.0:
.Net Core
Как включить:
Всё работает из коробки. В отличие от реализации в.Net Framework – тут нет необходимости в добавлении префикса “\\?\” – он добавляется автоматически при необходимости.
Вот можно посмотреть пример.
Как включить поддержку длинных путей в Windows 10 (1607)
Включить встроенную поддержку длинных путей можно создав или изменив следующий параметр системного реестра: HKLM\SYSTEM\CurrentControlSet\Control\FileSystem Параметр LongPathsEnabled (Тип: REG_DWORD) 1 – соответствует значению включено.
Или через групповые политики (Win+R\gpedit.msc) Computer Configuration > Administrative Templates > System > Filesystem > Enable NTFS long paths.
Оно же в локализованном варианте: Конфигурация компьютера > Административные шаблоны > Система > Файловая система > Включить длинные пути Win32.
Далее источники расходятся во мнении относительно манифеста (или я неправильно понял, но на данный момент проверить не имею возможности). Например, в документации MSDN написано, что манифест можно использовать в качестве альтернативного способа активации поддержки длинных путей в отдельных приложениях, а в блоге MSDN указано, что это является вторым обязательным шагом после активации в политиках.
Но они сходятся в формате задания данной опции:
true
С CMD, к сожалению, это не сработает, на данный момент, из-за особенностей работы с путями, а в PowerShell должно всё заработать.
P.S.
Спасибо за внимание!
Длинный у нас получился заголовок получился, но он указывает на суть проблемы, которая будет здесь описана. Недавно я столкнулся с не очень хорошей ситуацией. Сортируя на жёстком диске и очищая его от ненужного, я обнаружил, что один из файлов не удаляется, а появляется ошибка следующего содержания: «Файловая система не поддерживает такие длинные имена исходных файлов. Попробуйте перенести файл в папку с меньшей длиной пути или укажите более короткое имя файла и повторите попытку».
Я не только не мог удалить файл, но еще и изменить имя на более короткое имя тоже не удалось. Для многих это показалось бы тупиком, ведь получается, что файл не удаляем.
На самом деле проблема решается очень просто и быстро, и сейчас я опишу два метода её решения, а каким пользоваться решать только вам.
Нюансы длинных путей в приложениях
Есть один нюанс. Этот новый параметр (имеется ввиду та политика и ключ реестра) не обязательно будет работать со всеми существующими приложениями, но он будет работать с большинством. В частности, любые современные приложения должны работать нормально, как и все 64-битные приложения. Старые 32-разрядные приложения должны быть применимы для работы, что на самом деле просто означает, что разработчик указал в файле манифеста приложения, что приложение поддерживает более длинные пути. Большинство популярных 32-битных приложений не должно вызывать проблем. Тем не менее, вы ничем не рискуете, пробуя настройку. Если приложение не работает, единственное, что произойдет, это то, что оно не сможет открывать или сохранять файлы, сохраненные в местах, где полный путь превышает 260 символов.
Если вы разработчик, то чтобы ваше приложение имело возможность работать с длинными путями Windows, в манифесте обязательно указывайте следующие настройки:
true
Как удалять, копировать, переносить файлы и папки при ошибке с длинными путями
Разобравшись с тем, как отключить проверку MAX_PATH в приложениях, давайте теперь поймем и научимся решать проблему длинных путей на файловых шарах и просто в проводнике. Классическая ситуация, когда пользователь попытался перенести свой файл или удалить его, создать папку и так далее, и он получает ошибку с пресловутыми длинными путями. Он просит разобраться вас и тут начинаются танцы с бубнами, вы просите его либо переименовать часть пути, или попросить его произвести действия в другом расположении, или просто забить, сказав, что виновата Windows со своими ограничениями, но мы же с вами профессионалы и инженеры, поэтому должны уметь выходить из таких ситуаций.
Использование утилит Far или Total Commander
После включения параметра «Включить длинные пути Win32» данные утилиты в 100% случаев помог вам произвести любые действия с папками или файлами на любом длинном пути в системе Windows. Откройте Total Commander и создайте для примера папку в каталоге с длинным путем, напоминаю для этого нужно нажать F7.
Как видите все прекрасно создается, удаляется или копируется при желании.
Длинный у нас получился заголовок получился, но он указывает на суть проблемы, которая будет здесь описана. Недавно я столкнулся с не очень хорошей ситуацией. Сортируя файлы на жёстком диске и очищая его от ненужного, я обнаружил, что один из файлов не удаляется, а появляется ошибка следующего содержания: «Файловая система не поддерживает такие длинные имена исходных файлов. Попробуйте перенести файл в папку с меньшей длиной пути или укажите более короткое имя файла и повторите попытку».
Я не только не мог удалить файл, но еще и изменить имя на более короткое имя тоже не удалось. Для многих это показалось бы тупиком, ведь получается, что файл не удаляем.
На самом деле проблема решается очень просто и быстро, и сейчас я опишу два метода её решения, а каким пользоваться решать только вам.
Длинные пути в Windows 10
Практически каждый пользователь Windows рано или поздно сталкивается с ошибкой ″слишком длинный путь″ (path too long). Ошибка эта возникает при работе с файлами или папками, у которых полный путь превышает значение в 260 символов.
Напомню, что полный путь включает в себя букву диска, двоеточие, обратный слэш, имена компонентов (файл, директория) разделенные слешем и завершающий пустой символ (NUL). Выглядит полный путь примерно так:
C:\directory\subdirectory\filename<NUL>
Соответственно, если сумма всех компонентов пути больше 260 символов, то путь считается слишком длинным. Большинство приложений Windows не умеют работать с такими путями и при обращении к файлу\папке выдадут примерно такое сообщение:
Что интересно, значение в 260 символов обусловлено значением MAX_PATH Win32 API. У файловой системы NTFS максимальная длина пути ″немного″ больше и составляет 32767 символов. Для обхода ограничений Win32 API некоторые приложения используют формат UNC, указывая абсолютный путь с префиксом \\?\, например так:
\\?\C:\directory\subdirectory\filename
В Windows 10 (начиная с версии 1607) появилась возможность отключить проверку MAX_PATH и использовать длинные пути без префикса \\?\ . Сделать это можно двумя способами — с помощью групповых политик или путем редактирования реестра. Мы рассмотрим оба способа, начнем с политик.
Групповые политики
Первым делом открываем редактор локальных групповых политик, для чего жмем клавиши Win+R и выполняем команду gpedit.msc.
Нужная нам политика находится в разделе Конфигурация компьютера\Административные шаблоны\Система\Файловая система (Computer configuration\Administrative templates\System\Filesystem) и называется Включить длинные пути Win32 (Enable Win32 long paths).
Для активации поддержки длинных путей надо перевести политику в состояние «Включено».
Реестр
Для включения поддержки длинных путей через реестр необходимо найти в разделе HKLM\System\CurrentControlSet\Control\FileSystem параметр с именем LongPathEnabled и задать его значение равным 1.
Эту операцию можно произвести с помощью PowerShell, командой:
Set-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem -Name LongPathsEnabled -Value 1
В обоих случаях потребуется перезагрузить компьютер. После перезагрузки изменения вступят в силу и для путей будет действовать только ограничение файловой системы NTFS (32767 символа), превысить которое вам навряд ли удастся. Однако это вовсе не значит, что можно расслабится. В некоторых приложениях проверка MAX_PATH заложена в коде, поэтому по возможности лучше не превышать это ограничение.
Дополнение
Для того, чтобы пользоваться длинными путями, в приложении должна быть включена их поддержка. Если вы пишите собственное приложение, то для поддержки длинных путей в манифесте приложения надо указать следующие настройки:
А теперь о грустном. Как внезапно оказалось, в проводнике Windows поддержка длинных путей не реализована!!! Один из разработчиков Microsoft по этому поводу сказал примерно следующее:
″Эта функция не готова для включения в Windows Explorer. Вам нужно подождать, пока Microsoft не включит ее в Explorer, или использовать сторонний инструмент управления файлами, который совместим с длинными путями. ″
Это было сказано еще в 2016 году. Но, судя по всему, разработчики на данную проблему просто забили. На данный момент в версии 1903 проводник все так же не поддерживает длинные пути файлов. Вот так
Почему возникает ошибка «файловая система не поддерживает такие длинные имена»
Во всех версиях ОС Windows у каждого файла есть свое имя. Но обычно все данные не хранятся в одном месте, а распределяются (систематизируются) по папкам, чтобы их легче было найти. Внутри одной папки, например «Изображения», мы создаем подпапки «Природа», «Семья», «Работа» и так далее. В разделе «Семья» могут быть дополнительные папки «Отдых на море 2023», «Свадьба», «Шашлыки на даче» и прочее.
Когда происходит обращение к файлу (для удаления, воспроизведения или копирования), файловая система воспринимает весь путь к нему (названия всех папок), как одно имя. Это можно увидеть в строке Проводника.
Названия складываются вместе с названием конечного файла. В операционной системе Windows 7, 8, 10 установлено ограничение на общую длину такого имени файла в 255 символов. Это сделано для легкого взаимодействия с другими ОС, если понадобится объединить их в общую сеть.
При превышении ограничения символов имени в Windows возникает ошибка: файловая система не может работать с такими длинными названиями. В результате, если это фото, документ, видео или музыка, файл нельзя открыть, удалить или скопировать.
Более подробно прочитать обо всех ограничениях относительно имен в ОС Windows можно здесь.
Загрузите наш взлом реестра одним щелчком
Если вы не хотите погружаться в Реестр самостоятельно, мы создали два загружаемых взлома реестра, которые вы можете использовать. Один хак удаляет ограничение пути в 260 символов, а другой хак восстанавливает ограничение по умолчанию. Оба включены в следующий файл ZIP. Дважды щелкните тот, который вы хотите использовать, щелкните по подсказкам и перезагрузите компьютер.
Длинный путь имен хаков
Эти хаки на самом деле являются просто ключом , сокращаются до значения , которое мы описали выше, а затем экспортируются в файл .REG. Запуск хака «Remove 260 Character Path Limit» устанавливает значение равным 1. Выполнение хака «Restore 260 Character Path Limit (Default)» устанавливает значение обратно на 0. И если вам нравится играть с Реестр, стоит потратить время на то, чтобы научиться делать собственные взломы Реестра.
Переименование файлов и папок с помощью проводника
Проводник Windows 10 — это мощный инструмент. Знаете ли вы, что существует четыре отдельных способа переименовать встроенный файл или папку? Существует сочетание клавиш, которое позволяет переименовывать файл или папку без необходимости щелкать мышью.
Все методы, использующие File Explorer для переименования файла или папки, работают одинаково для обоих.
Использование главного меню
Запустите проводник, нажав Windows + E, и перейдите в каталог с файлом или папкой для переименования.
Нажмите на файл или папку, чтобы выбрать его, и нажмите «Переименовать» в главном меню в верхней части проводника.
Как только имя выбрано — если вы переименовываете файл, а не расширение файла — вы можете начать вводить новое имя. Если вы настроили File Explorer для отображения расширений файлов, убедитесь, что вы изменили только имя файла.
Когда вы закончите печатать, нажмите Enter или просто щелкните где-нибудь еще, чтобы сохранить новое имя.
Использование двух отдельных кликов
Запустите проводник, нажав Windows + E, и перейдите в каталог с файлом или папкой для переименования.
Выберите файл одним щелчком мыши, сделайте паузу на секунду, а затем нажмите еще раз.
После того, как имя выделено, введите новое имя и нажмите Enter, чтобы сохранить изменения.
Использование контекстного меню
Чтобы переименовать файл из контекстного меню, щелкните папку правой кнопкой мыши и выберите «Переименовать» в появившемся контекстном меню.
Выделив имя папки, начните вводить новое имя и нажмите Enter, когда закончите.
Использование сочетания клавиш
Если вы предпочитаете использовать сочетание клавиш, вы можете использовать его, чтобы выделить имя файла или папки, чтобы переименовать его без использования мыши.
Выберите файл или папку с помощью клавиш со стрелками или начните вводить имя. Как только файл выбран, нажмите F2, чтобы выделить имя файла.
После ввода нового имени нажмите клавишу Enter, чтобы сохранить новое имя.
Как избавиться от данной проблемы?
Решить вопрос с слишком длинным для SIM-карты именем контакта до смешного просто – вам необходимо сменить место хранения ваших контактов. Причем использовать можно как внутреннюю память смартфона, так и любой удобный для вас облачный сервис. Обо всем по порядку.
Перед началом установки нового места хранения контактов вам необходимо озаботиться о переносе уже имеющихся карточек с номерами телефона, сохраненных на вашей «симке». Так вы точно не потеряете важные для вас номера при каких-либо сбоях в работе смартфона.
Перенос контактов с SIM-карты
Для переноса используем приложение «Контакты». Заходим в общие Настройки вашего устройства и ищем раздел «Приложения», в котором тапаем по подразделу «Системные приложения». Внутри данного списка находим нужный нам пункт «Контакты» и нажимаем на него.
Первым же пунктом в настройках Контактов будет стоять раздел «Импорт и экспорт» — нажимаем на него. Теперь нажимаем на строчку «Импорт с SIM-карты», после чего на экране появится выбор места, где бы вы хотели хранить имеющиеся контакты. Чаще всего используется ваш Google-аккаунт – он банально удобнее благодаря своей частой и надежной синхронизации.
Установка нового места хранения контактов
Теперь нам необходимо поменять место хранения новых карточек. Заходим в приложение номеронабиратель (иконка в виде телефонной трубки) и вбиваем необходимый нам номер. После этого нажимаем на кнопку «Добавить контакт» и попадаем в карточку нового номера.
Сверху вы увидите пункт «Сохранить в…», нажав на который вы сможете выбрать место хранения новых контактов. Вы можете выбрать внутреннюю память смартфона, уже упомянутый Google-аккаунт, а также Mi-аккаунт. Вновь советуем выбрать именно ваш аккаунт Google – так надежнее.
После сохранения нового контакта последующие номера будут «попадать» именно в облачное хранилище Google, и размер имени контакта уже не будет для вас проблемой.
Нужно вернуться в те времена, когда создавались стандарты SIM-карт. Многие помнят, что память SIM-карты очень ограничена.
Перенос контактов с симки в память Xiaomi
Основная задача это как правильно перенести все контакты из SIM-карты в память смартфона. Это нужно не только для высвобождения номеров, но и для корректного отображения адресной книге. В будущем пригодится когда нужно будет экспортировать свою адресную книгу на другой смартфон. А так же удобнее делать резервные копии.
Запускаем смартфон и переходим в раздел Настройки, далее выбираем Системные приложения
Попадаем в раздел Системные приложения. Находим пункт Контакты
В этом разделе нужно выбрать пункт Импорт и Экспорт
Если у вас имеются контакты на SIM-карте, тогда у вас появится дополнительный раздел
с надписью «Импорт с SIM-карты» .
Так как я уже эту процедуру проделал, у меня остался только пункт « Импорт из памяти » .
Вам же надо выбрать «Импорт с SIM-карты» .
Дальше последует предложение о переносе ваших контактов в следующие разделы «Mi аккаунт» или «Google»
После открываем адресную книгу и переходим в раздел контакты.
При создании нового контакта у вас вверху будет отображаться выбор, где вы хотите сохранить ваш новый контакт, выбираем Google.
Включение поддержки длинных путей через реестр
Данный метод ни чуть не сложнее предыдущего и делает все то же самое, включает поддержку длинных путей свыше 256 символов для приложений Windows. Когда вы что-то меняете через редактор политик, по сути меняются настройки в реестре, это нужно помнить и знать. Сейчас я вам покажу какой ключ меняется. Откройте редактор реестра Windows. Перейдите в раздел:
тут вам необходимо найти параметр LongPathEnabled, которому для активации поддержки длинных путей и изменения ограничений в MAX_PATH, нужно задать значение «1». Тут потребуется перезагрузка.
Все что вам нужно, это распаковать zip-архив и запустить нужный файл активации, потом так же перезагрузиться, так как у вас будет создан нужный ключ реестра, без необходимости лезть в реестр самостоятельно.
Еще вы можете сделать такую поддержку и для конкретного пользователя по пути:
Если там нет ключа LongPathsEnabled, то создайте его, тип DWORD (32 бита) и значение 1.
Как временно исправить проблему с файлами?
Легкое Исправление
Если вам повезет, вы получите ошибку и точно знаете, какое имя файла вызывает проблему. Или, по крайней мере, где найти файл. Может быть, у вас есть имя файла, которое выглядит примерно так:
C:\User\guymc\Documents\My Resumesresumewithanamesolongthatitcausesproblemsandbecomespartofsomeguysarticleonthewebhowdoyoulikemenow.docx
Понятно, кто в этом случае виновник. Найдите файл в проводнике Windows или в проводнике, как он называется в Windows 10, нажмите один раз на него, нажмите F2, чтобы переименовать его, и измените это глупое имя файла на более разумное. Задача решена.
Менее простые исправления
Не всегда легко решить эту проблему. Иногда вы не можете изменить имена файлов или каталогов по любой причине.
Следующие решения помогут вам. Их несложно сделать.
Перемещение, удаление или копирование файлов или каталогов с помощью PowerShell Иногда вы получаете сообщение об ошибке при попытке переместить, удалить или скопировать каталоги, где количество символов для пути к файлу превышает 260.
Обратите внимание, что слова каталог и папка являются взаимозаменяемыми. Мы будем использовать «каталог» в будущем. Следующие командлеты PowerShell также можно использовать для файлов
Следующие командлеты PowerShell также можно использовать для файлов.
Возможно, путь к файлу выглядит примерно так:
C:\Users\guymc\Documents\This\Is\Exactly\The\Precise\Directory\Path\That\I\Need\To\Have\To\Keep\My\Files\Sorted\In\A\Manner\That\Makes\Sense\To\Me\So\Lets\Pretend\This\Is\An\Actual\Filepath\That\You\Might\Also\Have\On\Your\Windows\Computer\And\Not\Over\Think\It\Document.docx
Этот путь к файлу составляет 280 символов. Поэтому мы не можем скопировать каталог оттуда куда-либо еще с помощью обычного метода копирования-вставки. Мы получаем ошибку Destination Path Too Long.
Давайте предположим, что по какой-то причине мы не можем переименовать каталоги, в которые вложен файл. Что мы делаем?
Когда откроется PowerShell, вы окажетесь в корне своего пользовательского каталога. Продолжайте, предполагая, что C:\Users\guymc — ваш пользовательский каталог.
Каталог с именем This находится в каталоге Documents. Чтобы перейти в каталог Documents, мы используем команду .
Вы увидите быстрое изменение текущего каталога на C:\Users\guymc\Documents. Это хорошо. Мы работаем ближе к каталогам, которые облегчат жизнь.
Копирование каталога с использованием Copy-Item
Мы хотим скопировать каталог This и его содержимое в ThatNewFolder. Давайте используем команду PowerShell Copy-Item с параметрами -Destination и -Recurse.
-Destination сообщает PowerShell, где мы хотим, чтобы копия находилась. -Recurse говорит PowerShell скопировать все элементы внутри к месту назначения. Копирование оставляет оригиналы там, где они есть, и делает все новые в месте назначения.
Copy-Item This -Destination ThatNewFolder -Recurse
Переместить каталог с помощью Move-Item
Допустим, мы хотим переместить каталог This, а также все каталоги и файлы в нем, в ThatNewFolder. Перемещение не оставляет оригинал на месте.
Мы можем использовать команду PowerShell Move-Item с параметрами -Path и -Destination. -Path определяет элемент, который мы хотим переместить, и -Destination сообщает PowerShell, где мы хотим его получить.
Команда поместит это в ThatNewFolder. Он также будет перемещать все, что находится внутри этого каталога. Move-Item может использоваться для перемещения файлов или каталогов, и он работает независимо от пути к файлу или длины имени файла.
Move-Item -Path This -Destination ThatNewFolder
Чтобы убедиться, что это работает, используйте команду , чтобы войти в ThatNewFolder. Затем используйте команду для вывода списка каталогов в ThatNewFolder. Вы увидите, что этот каталог находится там.
Удалить каталог с помощью Remove-Item
Если мы хотим удалить этот каталог и все в нем, мы используем команду Remove-Item.
Командлет Remove-Item обладает некоторой встроенной безопасностью, которая затрудняет удаление каталога с содержимым внутри него. В нашем примере мы знаем, что хотим удалить все, поэтому мы будем использовать параметры -Recurse, чтобы заставить его удалять все внутри, и -Force, чтобы он делал это, не спрашивая нас, уверены ли мы в каждом элементе внутри.
Имейте в виду! Восстановить что-либо удаленное таким образом было бы чрезвычайно сложно.
Remove-Item This -Recurse -Force
Вы можете снова использовать команду dir, чтобы убедиться, что она пропала.
Вот и все
Существуют и другие способы обхода длинных имен файлов и путей к файлам, но то, что мы здесь рассмотрели, — это самые простые и эффективные методы.
https://youtube.com/watch?v=ZQ2T80mzVH4
Метод 3: включить поддержку длинного пути в редакторе реестра
Если вы используете Windows 10 1607 или более позднюю версию, вы можете включить поддержку длинного пути через редактор реестра, чтобы решить проблему. Чтобы быть конкретным, вы можете отключить ограничение MAX_PATH в Windows. Прежде чем изменять ключи реестра, вам лучше резервное копирование ключа на случай аварии.
Вот простое руководство:
1. Нажмите Win + R открыть Бежать .
2. Ввод regedit и нажмите Войти , чтобы открыть редактор реестра.
3. Перейдите по следующему пути:
Компьютер> HKEY_LOCAL_MACHINE> СИСТЕМА> CurrentControlSet> Управление> Файловая система .
4. Найдите LongPathsEnabled и дважды щелкните по нему.
5. Измените данные значения на 1 .
6. Щелкните Хорошо сохранить сдачу.
Затем вы можете выйти из редактора реестра и работать с файлом или папкой, чтобы увидеть, можете ли вы их успешно скопировать или переместить.
Описание проблемы длинных путей
Раньше имена файлов в Windows ограничивались форматом 8.3 — всего восемь символов для имени файла и три для расширения. С появлением Windows 95 Microsoft сняла этот предел и позволила использовать гораздо более длинные имена.
Тем не менее, файловая система Windows по-прежнему накладывает некоторые ограничения, например, какие символы могут использоваться в именах файлов и общую длину путей. Некоторое время максимальная длина пути составляла 260 символов, но с появлением Windows 10, часть ограничений начала потихоньку уходить, например для приложений и появилась возможность отключить проверку MAX_PATH и использовать длинные пути без префикса \\?\.
Что интересно, значение в 260 символов обусловлено значением MAX_PATH Win32 API. У файловой системы NTFS максимальная длина пути ″немного″ больше и составляет 32767 символа. Для обхода ограничений Win32 API некоторые приложения используют формат UNC, указывая абсолютный путь с префиксом \\?\, например так:
\\?\C:\директория\поддиректория\имя файла
Хочу отметить, что на период ноября 2020 года и последней версий Windows 10 1909, в ПРОВОДНИКЕ Windows до сих пор есть ограничения в 260 символов, и мы все слышим обещания, что их исправят
Большинство людей может и не столкнуться с ней, а вот почти каждый системный администратор обязательно это увидит. Тут все дело в том, что в большинстве организаций есть свои сетевые файловые ресурсы, через которые пользователи производят обмен и работу с документами. В какой-то момент люди могут создать такой путь, который будет 258 или 260 символов, попытаются туда скопировать файл, а им выдастся ошибка:
Слишком длинный целевой путь: Имена файлов слишком длинны для помещения в эту целевую папку. Попробуйте использовать более короткое имя имя файла или расположение с более коротким путем
Тоже самое при копировании в папку, так же выскакивает «Слишком длинный целевой путь».
Вот ошибка при извлечении архива в сетевую папку:
Не удается завершить извлечение. Слишком длинный конечный путь. Переименуйте сжатую ZIP-папку и повторите попытку