Na jednym z naszych serwerów plików Windows 2003 jakoś komuś lub coś udało się stworzyć nieskończenie powtarzające się drzewa katalogów w niektórych folderach domowych użytkowników i nie można ich usunąć.
Skończysz z czymś takim:
D:\Student\2012\user.name\servername\student\2012\user.name\servername\student\2012\...
I to trwa nieskończenie, o ile mogłem powiedzieć.
Próba usunięcia drzewa katalogów z systemu, w którym się znajduje, powoduje „Błąd usuwania pliku lub folderu: Nie można usunąć pliku:”. Próba usunięcia go z systemu Windows 7 podłączonego do udziału sieciowego powoduje błąd „folderu w użyciu”.
Jeśli poruszasz się po drzewie katalogów do samego końca, ostatecznie docierasz do katalogu, którego nie można otworzyć ani usunąć (po kliknięciu prawym przyciskiem myszy nie pojawiają się żadne standardowe opcje), jednak jeśli spróbujesz otworzyć ten sam katalog z udziału w innym systemie można go otworzyć, jednak Eksplorator Windows staje się bardzo wolny.
Wypróbowałem sugestie zawarte w tym poście, a także uruchomiłem serwer za pomocą dysku Linux i próbowałem wykonać komendę rm -rf katalogu, żadne z nich nie działało.
To jest tajemnica.
Edycja: Mogę również dodać, że można zmienić nazwy katalogów, ale po prostu ich nie usuwać.
Odpowiedzi:
Miałem też nieskończenie rekurencyjny folder, który został utworzony przez java IDE i nie mogłem go usunąć ani w Eksploratorze Windows, ani w wierszu polecenia cmd.
Jednak gdy zainstalowałem git, zainstalowałem także git-bash. W git-bash możesz wydać polecenie:
i zajmie się tym.
źródło
Możliwe, że gdzieś jest symboliczny link do folderu, najprawdopodobniej drugi
student
na twojej ścieżce.Spróbuj wykonać polecenie:
i sprawdź, czy
student
jest oznaczony jako DIR lub SYMLINK / JUNCTION.Na przykład jest to typowy wynik
dir
polecenia:Widzisz, że pierwsze dwa wpisy są oznaczone jako
DIR
, a trzeci (symboliczny link do innego folderu) jakoSYMLINKD
. W twoim przypadku (Windows 2003) myślę, że sąJUNCTION
s zamiastSYMLINK
s.Jeśli
student
folder jest dowiązaniem symbolicznym lub łączeniem, uruchom polecenia:i w ten sposób pozbyć się rekurencji.
źródło
Możliwe, że ktokolwiek pracował w tym folderze, zdołał utworzyć punkt połączenia, który zapętla się z powrotem
user.name
doservername
, tworząc w ten sposób drzewo katalogów „nieskończonej pętli”.Połączenia są funkcją systemu plików NTFS, która umożliwia utworzenie dowiązania symbolicznego do katalogu, który działa jako alias do katalogu. http://en.wikipedia.org/wiki/NTFS_junction_point
W sekcji „Obserwowane efekty” na stronie wiki możesz zobaczyć opisany problem.
Spróbuj uruchomić to narzędzie, aby wyświetlić listę skrzyżowań na tym serwerze:
http://technet.microsoft.com/en-us/sysinternals/bb896768
Powinno to również umożliwić usunięcie punktu połączenia.
źródło
Miałem podobny problem, gdy zaćmienie utworzyło bardzo głębokie drzewo folderów, którego nie mogłem usunąć. Ponieważ jednak można było przenosić foldery i zmieniać ich nazwy, napisałem plik wsadowy do pracy, więc w dół drzewa usuwa się foldery jeden po drugim i to działa! Dla pozornie nieskończenie głębokiego drzewa folderów FOLDERNAME w katalogu C, tj
Plik wsadowy:
Działa to, ponieważ TEMPFOLDERNAME jest teraz drzewem o skończonej długości (pojedynczy folder bez niczego), a ogromne drzewo FOLDERNAME ma o jeden folder mniej za każdym razem, gdy pętla jest uruchamiana, ostatecznie osiągając dół, usuwając folder u góry.
źródło
Natknąłem się na ten sam problem z ponad 5000 bałaganami katalogów z głębokim katalogiem, co niektóre aplikacje Java, i napisałem to:
https://gitlab.imanolbarba.net/imanol/DiREKT
Po pewnym czasie to wszystko usunęło, ale udało się to zrobić, mam nadzieję, że pomoże ludziom, którzy (tak jak ja) napotykają ten sam frustrujący problem
źródło
Rozwiązałem moje nieskończone zapętlanie katalogów za pomocą tego skryptu:
źródło
Miałem ten sam problem. Folder, który chciałem usunąć, zawierał niekończące się drzewo linków do tej samej nazwy, a każda próba jego usunięcia powodowała, że system Windows generował błąd „Plik był zbyt długi ...”. Nie powiodło się, niezależnie od polecenia, które wypróbowałem, uwzględniając wszystkie powyższe metody, więc wypróbowałem polecenie „rm” Cygwina w oknie cmd tuż nad danym folderem. Wpisałem „rm -r -f [folder]” i folder został usunięty bez reklamacji.
Możesz pobrać Cygwin za darmo ze strony https://cygwin.com/install.html . Zasadniczo jest to powłoka UNIX dla systemu Windows, która zawiera wszystkie typowe polecenia (np. Ls, rm, du i cat), ale także ma mnóstwo pakietów, które gdyby wszystkie zostały pobrane, zajęłyby około 1 GB miejsca. Wierzę, że domyślny pakiet pobierania zawiera polecenia UNIX. Jeśli nie, znajdują się w pakiecie „utils”, jeśli pamięć służy.
UWAGA: Nie musisz uruchamiać poleceń Cygwin w natywnym oknie powłoki bash. Można je uruchomić w oknie cmd, dodając ścieżkę do katalogu „bin” cygwina do systemowej zmiennej środowiskowej PATH. W moim przypadku dodałem „C: \ cygwin64 \ bin”.
Mam nadzieję, że to pomoże.
źródło
Mam tutaj ten sam problem.
W innych postach zasugerowano utworzenie kopii lustrzanej pustego folderu do folderu docelowego poprzez udział sieciowy za pomocą MS RoboCopy.
W tym momencie uruchamiam to, używając „> nul”, aby przyspieszyć (naprawdę działa):
„C: \ TEMP” to pusty folder, a „W: \ TMP” to folder, którego dotyczy problem :
robocopy / mir c: \ temp \ 127.0.0.1 \ w $ \ tmp> nul
źródło
Ja też to miałem w samodzielnym systemie Windows 10. C: \ Użytkownik \ Nazwa \ Powtórz \ Powtórz \ Powtórz \ Powtórz \ Powtórz \ Powtórz \ Powtórz pozornie do nieskończoności.
Zgodnie z PO mogłem nawigować za pomocą Windowsa lub wiersza polecenia do około 50. i nie dalej. Nie mogłem go usunąć ani kliknąć na niego itp. Dokładnie tak, jak to opisano.
C jest moim językiem, więc w końcu napisałem program z pętlą wywołań systemowych, które powtarzają się aż do niepowodzenia. Zgodnie z kodem DOS z JohnO utworzyłem katalog o nazwie tmp i przeniosłem do niego Repeat \ Repeat, usunąłem pusty teraz folder Repeat i przeniosłem tmp \ Repeat z powrotem do bieżącego folderu. W kółko!
ChkSystem po prostu uruchamia wywołanie system () i sprawdza wartość zwracaną, zatrzymując się, jeśli się nie powiedzie.
Co ważne, zawiodło wiele razy. Myślałem, że może mój program nie działa lub że mimo wszystko był nieskończenie długi. Jednak miałem to już wcześniej przy wywołaniach systemowych, przy czym rzeczy się nie synchronizowały, więc po prostu ponownie uruchomiłem program i kontynuowałem od momentu, w którym został przerwany, więc nie myśl, że twój program nie działa. W sumie, po uruchomieniu go około 20 razy, wyczyścił je wszystkie. W sumie pierwotnie miało około 1280 folderów. Nie mam pojęcia, co to spowodowało. Zwariowany.
źródło
Z 3-poziomowymi katalogami zapętlonymi:
źródło
Naprawiłem to, uruchamiając komendę chkdsk / f za pomocą konsoli administracyjnej, uruchomiłem ponownie, a następnie użyłem kasownika plików. Chociaż system Windows narzekał na coś długiego pliku / folderu, pozbył się problematycznego folderu rekurencyjnego, gdy potwierdziłem jego usunięcie.
Nie jestem pewien, czy istnieją inne problemy, które mogłem utworzyć za pomocą starej opcji chkdsk w moim systemie plików Windows 7 Pro.
źródło
Dla mnie ta odmiana metody Windows RoboCopy działała:
Tak, zajmuje to trochę czasu, ale wykonało swoją pracę.
źródło
Po prostu uruchom MS ROBOCOPY w następujący sposób:
. . . . . . . . . . . . . . .
ROBOCOPY „C: \ anyplace \ BADFOLDER” „C: \ wherever \ BADFOLDER” / MIR
Gdzie:
C: \ anyplace \ BADFOLDER .. to „pusty folder”, który utworzyłeś, i
C: \ wherever \ BADFOLDER .. to folder, w którym znajduje się „nieskończenie powtarzające się drzewo katalogów”.
. . . . . . . . . . . . . . .
Po uruchomieniu ROBOCOPY .. Masz teraz dwa „puste” BADFOLDERY.
Aby wyczyścić, usuń oba
C: \ anyplace \ BADFOLDER i C: \ wherever \ BADFOLDER
źródło