Прогу переноса файлов с длинными именами. Слишком длинный путь к источнику. Что делать, если слишком длинный путь к источнику, как удалить такой файл

Обновлено: 09.04.2019 Опубликовано: 13.07.2017

Описание

При попытке удалить или переместить файл, появляется ошибка:

Слишком длинный путь к источнику.
Файловая система не поддерживает такие длинные имена исходных файлов. Попробуйте перенести файл в папку с меньшей длинной пути или укажите более короткое имя файла и повторите попытку.

Причина

По умолчанию, операционная система Windows настроена на блокирование действий над файлами, путь к которым более 255 символов.

Решение

Способ 1. Уменьшаем путь до файла

Переименовываем все папки, в которые вложен наш файл. Когда путь до последнего сократиться, можно выполнить удаление или перемещение.

Способ 2. Включаем поддержку длинных файлов

Данный способ поддерживается, начиная с Windows 10 / Server 2016.

Ограничение в 255 символов — пережиток прошлого, необходимый для обеспечения совместимости с другими файловыми системами. Система не будет работать хуже, если данное ограничение отключить.

Открываем реестр (команда regedit ) и переходим по пути HKLM\SYSTEM\CurrentControlSet\Control\FileSystem . Находим или создаем ключ LongPathsEnabled с типом REG_DWORD и задаем ему значение 1 .

Это же действие из командной строки:

reg delete "HKLM\SYSTEM\CurrentControlSet\Control\FileSystem" /v LongPathsEnabled /f

reg add "HKLM\SYSTEM\CurrentControlSet\Control\FileSystem" /v LongPathsEnabled /t REG_DWORD /d 1

* первая команда, на всякий случай, удалит старый параметр (если его нет, команда вернет ошибку). Вторая — создаст нужный нам ключ.

Способ 3. Укорачиваем путь

Настраиваем сетевой доступ к папке и подключаем ее как сетевой диск. Путь станет меньше.

Способ 4. Far Manager

Устанавливаем программу Far Manager и просто удаляем необходимые файлы.

На одном из проектов довелось мне использовать модуль для Drupal - clientside validation. И не то чтобы модуль плохой, наоборот полностью выполняет свой функционал, а именно проверяет форму на стороне клиента. Но файлы модуля имеют довольно длинные названия, и вот из-за одного из таких файлов, наш git перестал работать адекватно. Поскольку записать информацию в эту папку уже не мог по причине следующей ошибки:

Не удается скопировать файл /папку. Слишком длинное имя / целевой путь конечного файла

Или тоже но на английском:

The file name(s) would be too long for the destination folder. You can shorten the file name and try again, or try a location that has a shorter path.

Проведя маленькое расследование оказалось, что максимальная длина пути которая поддерживается Windows 7 - 260 символов. А поскольку все проекты храняться у меня в папке C:\Users\\Documents\xampp\htdocs\git\ - то потенциально под угрозой оказались все проекты.

Варианты решения

Вариантов решения видел 2:

1. Перенести xampp в голову диска

2. Создать алиас для этого пути (Например диск с именем H)

Второй вариант показался более простым, ведь для xampp пути не поменяются, а gitом будем заходить в папки через созданный алиас. Ну еще для правильной работы IDE придется изменить путь проектам.

И так, для того чтобы Windows подставляла вместо Вашего длинного пути, имя диска - выполняем через cmd команду:

Subst H: C:\Users\\Documents\xampp\htdocs\git\

Вот пример структуры папок, которую я назвал «большой матрёшкой»:

Как видим, на диске «D» (Данные) есть исходная папка видео, в ней папка «Фильмы», в ней «Всё что нужно для просмотра фильмов» и далее таким же образом папка в папке. При этом многие папки имеют длинные названия названия — больше 10-15 символов, что в сумме даст объём символов во всех названиях больше 260. И если в конце такой «матрёшки» будет лежать файлик, то может получиться так, что работать с ним вы не сможете… Иногда сама система не даёт создать в конечном итоге папку или файл превышающий допустимое количество символов, но иногда почему-то такое происходит.

В начале для новичков поясню, что такое путь к файлу и папке. Путь – это так называемый адрес в компьютере, по которому располагается файл или папка. Например, файл под названием «Мой файл.txt» лежит на локальном диске D: в папке «Документы». Тогда путь к этому файлу будет выглядеть так:

D:\Документы\Мой файл.txt

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

Как видно, количество символов в пути выше велико и не исключено то, что в конце будет лежать файл или папка с длинным названием, который вы не сможете удалить.

При попытке удалить файл с длинным названием пути к нему, вы получите окно с ошибкой такого рода:

Я попробовал искусственно воссоздать проблему и вот что у меня получилось.

На диске «D» создал папку коротким именем «1» и в неё поместил файл с очень длинным названием. Вот пример:

Теперь я ту папку «1» переименовываю тоже в какое-то очень длинное название, например:

Что интересно, Windows свободно даёт переименовать папку вот в такое длинное название, несмотря на то, что количество символов в названии этой папки + названии файла уже превышает 260! Ну и после такого вот переименования папки в длинное название, я уже не могу удалить файл, расположенный в ней и получаю ошибку, показанную .

Или вот ещё пример… Я обслуживаю сайт Московского приборостроительного техникума, в котором ранее работал на полную ставку и иногда для тестирования каких-то новых «плюшек» для сайта использую копию сайта на своём компьютере. А то вдруг я что-то нехорошее установлю и сайт на хостинге умрёт? :) А так я у себя на компьютере проверяю и если всё в порядке, то уже настраиваю на реальном сайте, расположенном на хостинге. Так вот, один раз я перенёс себе с хостинга весь сайт чтобы протестировать одну вещь и после того как закончил работать, решил удалить с компьютера папку с сайтом. Ведь весит она порядке 6 Гб. Сайт удалился весь, кроме ряда папок. Я начал смотреть и увидел, что не удалились те папки, которые содержали в себе файл с длиннющим названием в виде иероглифов:

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

Как решить проблему удаления папки / файла с длинным названием пути!

Я пробовал 2 способа как можно удалить папку / файл с длинным названием в пути к ним. Оба они технически не сложные (особенное 1-й), поэтому, думаю, сможет справиться новичок если выполнит всё точно также как я показываю:

    Переименовать несколько папок в пути к файлу в более короткое название. Это самое простейшее решение, которое уже должно многим помочь! Предположим у вас в папке с очень длинным названием лежит файл, который вы не можете удалить, открыть, скопировать, да и вообще работать с ним не можете.

    Тогда попробуйте просто переименовать папку, в которой лежит файл с длинным названием, например, в «1». Вернусь к одному из примеров выше. Вот имеется папка с длинным названием:

    Переименовываю через стандартный проводник Windows название той папки в «1» и вот как теперь выглядит путь к файлу:

    Теперь, с файлом можно спокойно работать, система даст его открыть, переименовать и удалить.

    Если же у вас длинное дерево папок, т.е. как матрёшка, в одной папке другая, в ней ещё, потом ещё, то переименовывать начинайте с самой первой папки из этой матрёшки. Не с последней по списку, а с первой!

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

    Способ заключается в том, что вы можете взять какую-то папку, например, в середине общего дерева и подключить её в виде виртуального диска. Виртуальный диск – это то, что напоминает нам обычный локальный диск, но который просто привязывается к определённой папке, например, для быстрого взаимодействия с ней.

    Допустим у вас есть примерно такой вот длинный путь:

    D:\Видео\Мои фильмы\Всё что нужно для просмотра фильмов\Программы для просмотра фильмов\Как открывать фильмы MP4\Список фильмов-примеров MP4\Перечень программ для открытия MP4\Что нельзя делать при открытии файлов MP4

    Предположим, что в самой последней папке у нас лежит какой-то проблемный файл, с которым мы не можем работать, поскольку путь к нему, как видим, весьма приличной длинны:)

    Мы можем взять и подключить одну из папок с длинным названием в середине пути в качестве виртуального диска. Пусть это будет папка «Программы для просмотра фильмов».

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

    Открыть её можно через поиск Windows. В поиске так и наберите «Командная строка»:

    В окне командной строки нам нужно набрать команду:

    subst буква_виртуального_диска «путь_к_папке»

    Букву диска вы можете поставить любую, только чтобы она уже не была занята одним из локальных дисков. Например, у вас есть локальный диск C и D, а значит виртуальный диск вы уже не сможете обозвать той же буквой. Можно назвать, например, буквой «X», потому что она редко у кого используется в Windows.

    В качестве пути к папке вы вставляете путь к той папке, которую хотите подключить как виртуальную. Как я уже говорил, в моём примере виртуальной папкой сделаем «Программы для просмотра фильмов», а значит путь нужно указать вот такой:

    D:\Видео\Мои фильмы\Всё что нужно для просмотра фильмов\Программы для просмотра фильмов\

    Итак, итоговая команда в моём случае будет выглядеть вот так:

    subst X: «D:\Видео\Мои фильмы\Всё что нужно для просмотра фильмов\Программы для просмотра фильмов\»

    Чтобы выполнить введённую команду, нажимаем клавишу «Enter» на клавиатуре. Виртуальный диск будет создан.

    Теперь перейдём в проводник Windows, зайдём в раздел «Этот компьютер» (или «Компьютер») и видим там созданный виртуальный диск:

    Отличить его можете по букве. Я присваивал букву «X» виртуальному диску. Теперь если открыть этот виртуальный диск, то мы сразу окажемся в папке «Программы для просмотра фильмов». Т.е. мы взяли и срезали нафиг половину пути к конечной папке.

    Для сравнения…

    Ранее путь к конечной папке выглядел так:

    D:\Видео\Мои фильмы\Всё что нужно для просмотра фильмов\Программы для просмотра фильмов\Как открывать фильмы MP4\Список фильмов-примеров MP4\Перечень программ для открытия MP4\Что нельзя делать при открытии файлов MP4

    После подключения виртуального диска к папке «Программы для просмотра фильмов» путь к конечной папке выглядит так:

    X:\Как открывать фильмы MP4\Список фильмов-примеров MP4\Перечень программ для открытия MP4\Что нельзя делать при открытии файлов MP4

    Чувствуете разницу? Путь сокращён в два раза, поскольку буква диска сразу же направляет нас к папке в средине пути:) А поскольку путь сильно сокращён, наверняка теперь вы сняли ограничение по символам в названиях файлов и папок и сможете удалить файл или папку с длинным названием!

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

    Для этого снова откройте командную строку Windows и введите команду:

    Subst буква_виртуального_диска /d

    В моём случае буква диска «X», поэтому команда будет выглядеть вот так:

Когда я думал над вариантами решения проблемы, как удалить папку или файл с длинным названием, в интернете находил ещё такой вот вариант: удалить проблемный файл через программу «Total Commander». Попробовал, нифига не получилось, поэтому и советовать такой способ не стал:)) Да и способ, даже если он у кого-то бы и заработал, честно говоря не прикольный, потому что приходится ставить дополнительную программу на свой компьютер ради удаления одного лишь файла или папки с длинным названием…

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

На этом всё! До скорых встреч в следующих статьях;)

В продолжение темы:
Роутеры

Сохранение для игры Grand Theft Auto 5 PC - Сейв обновлен 06.05.2015 - Игра пройдена на 90% - Полностью пройдена сюжетная линия (69 из 69 заданий) - После последнего...