Смотрите также Как в Windows 10 включить поддержку пути к файлам длиной более 260 символов.
Во всех операционных системах и для всех файловых систем существуют определённые лимиты на:
- размер имени файла
- на полный путь файла (который включает папки и подпапки)
Операционная система Windows не является исключением, в ней длина имени файла или папки ограничена 255 символами, а вся длина пути ограничена примерно 32,000 символами.
Имеется ряд исключений, когда разрешённая длина файла должна быть меньше этих значений:
- предыдущие версии Windows
- сетевые диски
- оптические диски CD и DVD
К сожалению, Windows весьма «молчалив» в ситуациях, когда возникают проблемы с длиной имени файла или пути на сетевых носителях. В результате, часть файлов может отображаться нормально, а часть отсутствовать. Если файлов много, то не всегда просто понять, все ли они на месте. Признаками того, что некоторые файлы на сетевой папке имеют слишком длинное имя является:
- отсутствует файл, который точно должен быть или который виден при подключении диска напрямую (а не через сеть)
- при создании файла возникает ошибка, что такой файл уже существует, хотя его не видно
При поиске по файлам средствами ОС, эти файлы также недоступны для индексации и поиска по ним.
Все программы, от стандартного проводника Windows до сторонних файловых менеджеров не способны увидеть эти файлы со слишком длинными именами, при этом каких-либо ошибок не возникает.
Подтвердить проблему слишком длинного имени на сетевом носителе можно командой вида:
dir "\\путь\до\папки"
Например команда:
dir "\\VBOXSVR\Share\Архив работ\УП\"
вызывает следующую ошибку из-за того, что в папке имеется файл со слишком длинным именем:
Каталог: \\VBOXSVR\Share\Архив работ\УП Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 24.08.2010 17:29 Общая часть d----- 17.02.2019 16:10 Особенная часть d----- 01.11.2018 10:24 Чужое dir : Параметр задан неверно. строка:1 знак:1 + dir "\\VBOXSVR\Share\Архив работ\УП\" + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : ReadError: (\\VBOXSVR\Share\Архив работ\УП\:String) [Get-ChildItem], IOException + FullyQualifiedErrorId : DirIOError,Microsoft.PowerShell.Commands.GetChildItemCommand
Если вы работаете с сетевым диском и он подключён к Linux, то вам может помочь инструкция «Как найти имена файлов, чья длина превышает определённое значение».
В остальных случаях, попробуйте следующие советы:
1. (если слишком длинный путь до файла) Вначале скопируйте папку на более высокие уровни в windows эксплорере и затем переместите их на ваш локальный компьютер
2. (если имена файлов слишком длинные) Вначале попробуйте поместить их в архив программами zip/rar/7z и затем скопируйте файл архива на свой локальный компьютер и извлеките его содержимое
3. Попробуйте встроенную программу ROBOCOPY:
robocopy /E ИСТОЧНИК НАЗНАЧЕНИЕ
4. Попробуйте перед путём добавить \\?\
\\?\C:\Some\Really\Long\Path
5. Используйте сторонне программное обеспечение (о нём далее)
FastCopy — это проект с открытым исходным кодом на C, написанный SHIROUZU Hiroaki и это "Самое быстрое программное обеспечение для копирования/удаления файлов на Windows." Программа поддеррживает UNICODE и более чем MAX_PATH (260 символов) в путях имён файлов.
Если имеются сотни путей, которые слишком долго исправлять, то используйте инструмент "Path Tool Long Auto Fixer".
Связанные статьи:
- Как в Windows 10 включить поддержку пути к файлам длиной более 260 символов (93.6%)
- Как переименовать файл или папку в PowerShell (64.6%)
- Создание жёстких и мягких ссылок с помощью PowerShell (64.6%)
- Как создать общую сетевую папку на Windows (56.4%)
- Как подключиться к сетевой папке в Windows (SMB) (56.4%)
- Лёгкий доступ к файлам в подсистеме Windows для Linux (WSL) (RANDOM - 50%)