Как удалить файл с длинным именем который не удаляется?

10 ответов на вопрос “Как удалить файл с длинным именем который не удаляется?”

  1. DoKGames Ответить


    Powershell также не умеет корректно обрабатывать каталоги и файлы с большими путями, превышающими 260 символов. При попытке удалить каталог с такими файлами (C:\Install\MS SQL 2012 Express Edition 64 bit\verylongpath) появляется ошибка:
    Remove-Item .\verylongpath -RecurseRemove-Item : The specified path, file name, or both are too long. The fully qualified file name must be less than 260
    characters, and the directory name must be less than 248 characters.
    At line:1 char:1
    + Remove-Item .\verylongpath -Recurse
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : WriteError: (C:\Install\MS S…it\verylongpath:String) [Remove-Item], PathTooLongExcepti
    on
    + FullyQualifiedErrorId : RemoveItemIOError,Microsoft.PowerShell.Commands.RemoveItemCommand

    Самый простой вариант (он, собственно, и предлагается в окне с ошибкой) – сократить название родительских папок, уменьшив общую длину пути (но применимо не всегда).
    Другой вариант – создать символическую ссылку на часть пути, укоротив тем самым общую длину пути:
    mklink /d c:\install\link “C:\Install\MS SQL 2012 Express Edition 64 bit\verylongpath”Далее файловые операции проводить с каталогом, на который назначена символьная ссылка.
    Еще один вариант, напоминающий работу с символьной ссылкой  — сопоставить проблемную папку виртуальному диску (в нашем примере X: ), тем самым также сократив длину пути:
    Subst X: “C:\Install\MS SQL 2012 Express Edition 64 bit\verylongpath”Теперь можно работать с данными на диске X:, пути к файлам в котором не будут превышать лимит. После окончания работы можно удалить виртуальный диск:
    Subst X: /dНо лично мне больше всего для задачи удаления данных в таких ситуациях нравится возможности robocopy.exe, которая поддерживает работу с длинными путями.
    С помощью опции /MIR, утилита robocopy может создать полную копию (зеркало) исходного каталога в целевом. И, если исходная папка пустая, все данные в целевой папке также очищаются. Создадим пустую папку C:\Install\test и с помощью аргумента /MIR выполним копирование содержимое тестовой папки в целевую (если имя папки содержит пробелы или кириллические символы, путь нужно взять в кавычки).
    robocopy /MIR C:\Install\test “C:\Install\MS SQL 2012 Express Edition 64 bit\verylongpath”
    После выполнения команды содержимое каталога C:\Install\MS SQL 2012 Express Edition 64 bit\verylongpath очищается (заменятся содержимым пустого каталога).
    Итак, сегодня мы показали несколько простых трюков, которые можно использовать при работе с папками на файловых серверах, содержащих папки, длина пути к которым превышает лимит 260 символов.

  2. Dipt Ответить

    Обновлено: 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.
    Это же действие из командной строки:

  3. Coilsa Ответить

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

    Начиная с самой первой папки в этом длинном пути — переименовал несколько штук…

    …и повторил попытку избавиться от файла с теперь более коротким именем — он благополучно отправился в страну удалённых файлов.
    Естественно, что новое имя файла (папки) должно состоять из одного символа или цифры, как у меня в примере.

  4. Protege Ответить

    6. Если не удаляется файл на NTFS, у которого не указан владелец, перед удалением сделайте владельцем пользователя, от которого вы будете удалять это файл. (Назначить владельца можно, имея права администратора, логично его и сделать владельцем.)
    При проблемах с удалением файлов с длинными именами пробуем через короткие DOS-имена
    Если слишком длинное полное имя (с путём) – можно сделать следующее:
    текущий каталог расшарить с полным доступом – зайти в него и удалить(или подключить как диск и оттуда удалить).
    Если средствами Windows всё-же не получилось, то попробуйте удалить файл из-под другой ОС.
    Это может быть что-то загружаемое с дискеты или CD, как на пример Windows Recovery Console, DOS-NTFS, WinPE, или LiveCD дистрибутив Linux с поддержкой вашей ФС.
    Иногда встречается комбинация причин, усложняющая процесс удаления файла. Например, при проблемном имени файла нельзя изменить права доступа с помощью GUI-редактора ACL.
    В этом случае можно воспользоваться утилитой Subinacl из Server Resource Kit с параметром /onlyfile для смены владельца и разрешений на файл, недоступный иным образом, например:
    subinacl /onlyfile\\?\c:\путь_к_проблемному_файлу” /setowner=Домен\Администратор /grant=Домен\Администратор=F
    Данная командная строка изменяет файл C:\путь_к_проблемному_файлу, содержащий конечный пробел, таким образом, что учетная запись Домен\Администратор становится владельцем файла и получает полный доступ к нему. Теперь можно удалить файл с помощью команды Del с тем же синтаксисом «\\?\».
    Подробнее см. статью kb Невозможно удалить файл или папку в томе с файловой системой NTFS
    Если в папку NTFS примонтирован раздел, то при доступе к нему в рамках ФС базового раздела невозможно удалить файлы/папки в корзину (см. статью kb You Receive an “Access Denied” Error Message When You Delete Folders from a Mounted Drive).
    Т.е. если в папку C:\Большой_Диск примонтирован другой раздел, то файлы с примонтированного раздела нельзя удалять, пользуясь путём через эту папку, например, C:\Большой_Диск\Ещё_куда-нибудь\Удали.Меня
    Решение – удалять, минуя корзину (Shift+Del) или удалять в корзину непосредственно на том разделе, а не через точку монтирования
    Если ничего не помогаетВсего записей: 810 | Зарегистр. 27-04-2002 | Отправлено: 13:26 13-11-2002 | Исправлено: Nilslis, 20:31 25-02-2017

  5. SUPER Car Ответить

    6. Если не удаляется файл на NTFS, у которого не указан владелец, перед удалением сделайте владельцем пользователя, от которого вы будете удалять это файл. (Назначить владельца можно, имея права администратора, логично его и сделать владельцем.)
    При проблемах с удалением файлов с длинными именами пробуем через короткие DOS-имена
    Если слишком длинное полное имя (с путём) – можно сделать следующее:
    текущий каталог расшарить с полным доступом – зайти в него и удалить(или подключить как диск и оттуда удалить).
    Если средствами Windows всё-же не получилось, то попробуйте удалить файл из-под другой ОС.
    Это может быть что-то загружаемое с дискеты или CD, как на пример Windows Recovery Console, DOS-NTFS, WinPE, или LiveCD дистрибутив Linux с поддержкой вашей ФС.
    Иногда встречается комбинация причин, усложняющая процесс удаления файла. Например, при проблемном имени файла нельзя изменить права доступа с помощью GUI-редактора ACL.
    В этом случае можно воспользоваться утилитой Subinacl из Server Resource Kit с параметром /onlyfile для смены владельца и разрешений на файл, недоступный иным образом, например:
    subinacl /onlyfile\\?\c:\путь_к_проблемному_файлу” /setowner=Домен\Администратор /grant=Домен\Администратор=F
    Данная командная строка изменяет файл C:\путь_к_проблемному_файлу, содержащий конечный пробел, таким образом, что учетная запись Домен\Администратор становится владельцем файла и получает полный доступ к нему. Теперь можно удалить файл с помощью команды Del с тем же синтаксисом «\\?\».
    Подробнее см. статью kb Невозможно удалить файл или папку в томе с файловой системой NTFS
    Если в папку NTFS примонтирован раздел, то при доступе к нему в рамках ФС базового раздела невозможно удалить файлы/папки в корзину (см. статью kb You Receive an “Access Denied” Error Message When You Delete Folders from a Mounted Drive).
    Т.е. если в папку C:\Большой_Диск примонтирован другой раздел, то файлы с примонтированного раздела нельзя удалять, пользуясь путём через эту папку, например, C:\Большой_Диск\Ещё_куда-нибудь\Удали.Меня
    Решение – удалять, минуя корзину (Shift+Del) или удалять в корзину непосредственно на том разделе, а не через точку монтирования
    Если ничего не помогаетВсего записей: 810 | Зарегистр. 27-04-2002 | Отправлено: 13:26 13-11-2002 | Исправлено: Nilslis, 20:31 25-02-2017

Добавить ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *