usuń katalog rekurencyjny utworzony przez robocopy, gdy „Nazwa pliku jest za długa”

9

Po uruchomieniu robocopy.exe, aby wykonać kopię zapasową folderu C: \ Users \ bez użycia /xjprzełącznika, skończyło się na zbyt długim katalogu rekurencyjnym. Na przykład po uruchomieniu dir /b /spojawi się następujący błąd:

Nazwa katalogu C: \ Users \ ... \ AppData \ Local \ Application Data \ Dane aplikacji \ Dane aplikacji \ Dane aplikacji \ Dane aplikacji \ Dane aplikacji \ Dane aplikacji \ Dane aplikacji \ Dane aplikacji \ Dane aplikacji \ Dane aplikacji \ Aplikacja Dane \ Dane aplikacji są za długie.

Próbowałem go usunąć, rmdir "Application Data" /sale wystąpił błąd „Nazwa pliku jest za długa”

Szukałem na innych rozwiązań, ale pomyślałem, że będę mógł skorzystać z narzędzia, które spowodowane problem do rozwiązania go.

Aaron
źródło

Odpowiedzi:

14

Utwórz pusty katalog za pomocą mkdir empty, a następnie użyj, robocopy empty\ "Application Data\" /mir"aby usunąć całe drzewo katalogów. Następnie wydaj a rmdir emptyi rmdir "Application Dataposprzątaj i gotowe.

Aaron
źródło
3
+1 Niewiarygodne, że wymaga czegoś tak tajemniczego, aby zrobić coś tak prostego, jak usunięcie folderu ...
nextgentech
Ten buggy nieskończony folder rekurencyjny doprowadzał mnie do szału! Dziękuję Ci.
Zofren,
4

Możesz być w stanie cdwejść wystarczająco głęboko w katalog, aby usunąć to, co poniżej, i cdponownie utworzyć kopię zapasową na górze i usunąć to, co zostało.

Jeśli to nie zadziała, a nadal utkniesz, pobierz bezpłatną wersję demonstracyjną mojej powłoki Hamilton C (pełne ujawnienie: jestem autorem) i skorzystaj z rmnarzędzia, które się z nią korzysta, używając -r(rekurencyjnego) i -x(usuń cokolwiek ) opcje.

rm -rx directoryname

Mój rmużywa nowego formatu długich plików Unicode wewnętrznie, pozwalając mu manipulować ścieżkami o 32K znaków i to powinno go uzyskać.

Jeśli odkryjesz, że problem dotyczy również uprawnień, może być konieczne użycie sudolub supodniesienie, np.

sudo rm -rx directoryname

W naprawdę upartych przypadkach może Ci przeszkadzać lista ACL, która uniemożliwia dostęp, np. caclsRaporty Everyone:(DENY). W takim przypadku może być konieczne usunięcie tego wpisu (wpis kontroli dostępu).

cacls directoryname /e /r everyone

Wreszcie, naprawdę zamierzam, aby to było pomocne. Moje dzienniki serwera informują mnie, że ludzie pobierają moje oprogramowanie, aby wypróbować to i chcę, aby to działało. Jeśli napotkasz przypadek, w którym tak się nie stało, mam nadzieję, że wyciągniesz rękę, aby mi powiedzieć, żebym mógł debugować dlaczego i sprawić, by działał. Rzeczy, których nie można usunąć, zdarzają się często i chciałbym, aby wszystkie sprawy zostały objęte.

Nicole Hamilton
źródło
3

Możesz także spróbować jednego z poniższych;

Rozwiązanie 1: Użyj automatycznie wygenerowanej nazwy 8.3, aby uzyskać dostęp do pliku

Rozwiązanie 2: Zmień nazwę lub przenieś głęboki folder

Rozwiązanie 3: Zamapuj dysk na folder w strukturze ścieżki Zamapuj dysk na folder wewnątrz struktury ścieżki docelowego pliku lub folderu. Ta metoda skraca wirtualną ścieżkę.

Rozwiązanie 4: Użyj udziału sieciowego, który jest tak głęboki jak folder Jeśli rozdzielczości 1, 2 i 3 nie są wygodne lub nie rozwiązują problemu, utwórz udział sieciowy, który jest tak głęboko w drzewie folderów, jak to możliwe, a następnie zmień nazwę folderów, uzyskując dostęp do udziału.

Rozwiązanie 5: Użyj narzędzia, które może przechodzić głębokie ścieżki

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

Shawn
źródło
to rozwiązanie wydaje się być rodzajem „Rozwiązania 5: Użyj narzędzia, które może przemierzać głębokie ścieżki”
Aaron