удалить рекурсивный каталог, созданный 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 Данные \ Application Data \ Application Data слишком длинны.

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

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

9 голосов | спросил Aaron 24 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowMon, 24 Sep 2012 15:18:55 +0400 2012, 15:18:55

3 ответа


14

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

ответил Aaron 24 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowMon, 24 Sep 2012 15:18:55 +0400 2012, 15:18:55
4

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

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

rm -rx directoryname

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

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

sudo rm -rx directoryname

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

cacls directoryname /e /r everyone

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

ответил Nicole Hamilton 24 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowMon, 24 Sep 2012 18:37:42 +0400 2012, 18:37:42
3

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

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

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

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

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

Разрешение 5: Используйте инструмент, который может пересекать глубокие пути

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

ответил Shawn 24 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowMon, 24 Sep 2012 15:29:11 +0400 2012, 15:29:11

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132