видалити рекурсивний каталог, створений роботокопією, коли "Назва файлу занадто довга"


9

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

Назва каталогу C: \ Користувачі \ ... \ AppData \ Local \ Дані програми \ Дані програми \ Дані програми \ Дані програми \ Дані програми \ Дані програми \ Дані програми \ Дані програми \ Дані програми \ Дані програми \ Дані програми \ Дані програми \ Прикладні дані Дані \ Дані програми занадто довгі.

Я спробував видалити його, rmdir "Application Data" /sале отримав помилку "Назва файлу задовга"

Я розглядав інші рішення, але думав, що міг би використати інструмент, який спричинив проблему для її вирішення .

Відповіді:


14

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


3
+1 Неймовірно, що для того, щоб зробити щось таке просте, як видалити папку, потрібне щось таке, що
махає

Ця баггі-нескінченна рекурсивна папка зводила мене з розуму! Дякую.
Зофрен

4

Можливо, ви зможете 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


Це рішення, здається, є типом "Резолюція 5: Використовуйте інструмент, який може пройти глибокі шляхи"
Аарон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.