удалить рекурсивный каталог, созданный robocopy, когда «Имя файла слишком длинное»

удалить рекурсивный каталог, созданный robocopy, когда «Имя файла слишком длинное»

После запуска robocopy.exe для резервного копирования папки C:\Users\ без использования переключателя /xjя получил рекурсивный каталог, который был слишком длинным. Например, если вы запустите, dir /b /sвы получите следующую ошибку:

Имя каталога C:\Users\ ... \AppData\Local\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data слишком длинное.

Я попытался удалить его, rmdir "Application Data" /sно получил ошибку «Имя файла слишком длинное».

Я рассматривал другие решения, но подумал, что смогу использовать инструмент, которыйвызванныйвопрос крешатьэто.

решение1

Создайте пустой каталог с помощью mkdir empty, затем используйте robocopy empty\ "Application Data\" /mir", который удалит все дерево каталогов. Затем выполните rmdir emptyи rmdir "Application Dataдля очистки, и все готово.

решение2

Возможно, вам удастся cdспуститься достаточно глубоко в каталог, чтобы удалить то, что находится ниже, а затем cdснова подняться наверх и удалить то, что осталось.

Если это не сработало и вы все еще не можете найти решение, загрузитебесплатная демоверсияверсию моей оболочки Hamilton C (полное раскрытие информации: я автор) и использоватьrmутилита, которая идет в комплекте, с опциями -r(рекурсивный) и -x(удалить что-либо).

rm -rx directoryname

Мой rmиспользует новыйдлинное имя файла Unicodeотформатировать внутренне, что позволит ему манипулировать путями длиной до 32 тыс. символов, и этого должно хватить.

Если вы обнаружите, что проблема также связана с разрешениями, вам может потребоваться использоватьsudoили suвозвышать, например,

sudo rm -rx directoryname

В действительно сложных случаях вы можете быть заблокированы ACL, который запрещает доступ, например, caclsотчеты Everyone:(DENY). В этом случае вам может потребоваться удалить эту ACE (запись контроля доступа).

cacls directoryname /e /r everyone

Наконец, я действительно хочу, чтобы это было полезно. Мои журналы сервера говорят мне, что люди скачивают мое программное обеспечение, чтобы попробовать это, и я хочу, чтобы это работало. Если вы столкнетесь со случаем, когда это не сработает, я надеюсь, вы свяжетесь со мной, чтобы я мог отладить причину и заставить это работать. То, что вы не можете удалить, случается часто, и я хотел бы, чтобы все случаи были охвачены.

решение3

Вы также можете попробовать один из следующих вариантов:

Резолюция 1:Используйте автоматически сгенерированное имя 8.3 для доступа к файлу

Резолюция 2:Переименовать или переместить глубокую папку

Резолюция 3:Сопоставить диск с папкой в ​​структуре пути Сопоставить диск с папкой внутри структуры пути целевого файла или папки. Этот метод сокращает виртуальный путь.

Резолюция 4:Используйте сетевой ресурс такой же глубины, как и папка. Если решения 1, 2 и 3 не подходят или не решают проблему, создайте сетевой ресурс такой же глубины в дереве папок, а затем переименуйте папки, обратившись к ресурсу.

Резолюция 5:Используйте инструмент, который может проходить глубокие пути

http://support.microsoft.com/kb/320081

Связанный контент