Eclipse utworzył folder tymczasowy w jednym z katalogów, który jest zagnieżdżony dość głęboko, np
dir1\dir1\dir1\dir1\...
Nie mogę usunąć tego folderu w systemie Windows za pomocą Eksploratora, poleceń del
lub rmdir
ani polecenia Cygwin „rm”. Jak powinienem usunąć ten bardzo długi folder?
Ciągle mówi „Nazwa pliku jest za długa ...”
Odpowiedzi:
Jeśli jesteś podobny do mnie i nie lubisz instalować dodatkowego oprogramowania, aby rozwiązać taki problem, skorzystam z sugestii XQYZ i wykorzystam go
robocopy
do rozwiązania problemu. (W moim przypadku problem został stworzony przede wszystkim przez robocopy, poprzez skopiowanie katalogu, który zawierał rekurencyjne punkty połączenia bez dostarczania / XJ do robocopy).Aby usunąć drzewo katalogów zaczynające się na c: \ subdir \ more \ offending_dir :
Cały proces krok po kroku jest tak prosty, jak to:
cd c:\subdir\more
na cd do katalogu nadrzędnego.mkdir empty
aby utworzyć pusty katalog.robocopy empty offending_dir /mir
aby utworzyć kopię lustrzaną pustego katalogu w katalogu naruszającym prawo.rmdir offending_dir
pozbyć się teraz pustego katalogu obrażającego irmdir empty
aby pozbyć się pośredniego pustego katalogu.źródło
robocopy
i punkty połączenia; dzięki za pokazanie mi, jak go użyć, aby posprzątać bałagan!Jest to w rzeczywistości dość proste do naprawienia. Powiedz, że struktura katalogów jest taka:
Aby to naprawić, po prostu zmień nazwę każdego folderu na jednoznakową nazwę folderu, dopóki nie będzie już zbyt długo do usunięcia:
C:\Dir1
naC:\D
C:\D\
C:\D\Dir1
naC:\D\D
C:\D\D\
Oto plik wsadowy do automatyzacji procesu (ta prosta wersja jest najlepsza dla prostych katalogów takich jak ten opisany w pytaniu, szczególnie dla katalogów jednorazowych). Przekazać ją najwyższą folderu możliwe (na przykład
C:\Dir1
naC:\Dir1\Dir1\Dir1…
lubC:\Users\Bob\Desktop\New Folder
zaC:\Users\Bob\Desktop\New Folder\abcdefghi…
)Wyjaśnienie techniczne
Pozostałe proponowane rozwiązania mają charakter wsteczny; nie możesz tego naprawić, idąc od najbardziej wewnętrznego katalogu na zewnątrz, musisz iść w innym kierunku.
Kiedy próbujesz uzyskać dostęp do katalogu, robisz to, używając jego bezwzględnej ścieżki, jawnie lub nie, która obejmuje wszystko, co było przed nim. Dlatego dla takiej struktury katalogów
C:\Dir1\Dir1\Dir1\Dir1
długość ścieżki do najbardziej wewnętrznegoDir1
wynosi 22. Jednak długość ścieżki do najbardziej zewnętrznejDir1
wynosi tylko 7, a zatem jest nadal dostępna niezależnie od jej zawartości (w kontekście ścieżki danego katalogu , system plików nie ma wiedzy o tym, co zawiera ani o wpływie, jaki ma na całkowitą długość ścieżki swoich katalogów potomnych, tylko katalogi przodków - nie można zmienić nazwy katalogu, jeśli całkowita długość ścieżki będzie zbyt długa).Dlatego gdy napotkasz zbyt długą ścieżkę, musisz przejść na najwyższy możliwy poziom i zmienić nazwę na jednoznakową i powtórzyć dla każdego poziomu na tym poziomie. Za każdym razem, gdy to robisz, całkowita długość ścieżki ulega skróceniu o różnicę między starą nazwą a nową nazwą.
Jest też odwrotnie. Nie można utworzyć ścieżki większej niż maksymalna obsługiwana długość (w systemach DOS i Windows
MAX_PATH = 260
). Możesz jednak zmienić nazwy katalogów, od najbardziej wewnętrznego do dłuższego. Powoduje to, że głębsze foldery, których bezwzględna ścieżka wynosi> 260, będą niedostępne. (To nie czyni ich „ukrytymi” ani bezpiecznymi, ponieważ są wystarczająco proste, aby się do nich dostać, więc nie używaj tej metody do ukrywania plików.)Ciekawa uwaga dodatkowa
Jeśli tworzysz foldery w Eksploratorze Windows 7, może się wydawać, że Eksplorator umożliwia tworzenie podkatalogów w taki sposób, że łączna długość jest dłuższa niż
MAX_PATH
w rzeczywistości, ale tak naprawdę oszukuje za pomocą „nazw plików DOS 8.3”. Możesz to zobaczyć, tworząc drzewo, takie jak:Ma 696 znaków, co oczywiście jest znacznie dłuższe niż 260. Ponadto, jeśli przejdziesz do najbardziej wewnętrznego podkatalogu w Eksploratorze, wyświetli się on zgodnie z oczekiwaniami na pasku adresu, gdy nie jest aktywny, ale po kliknięciu adresu pasek zmienia ścieżkę na
C:\ABCDEF~1\ABCDEF~1\ABCDEF~1\ABCDEF~1\ABCDEF~1\ABCDEF~1\ABCDEF~1\ABCDEF~1\ABCDEF~1\ABCDEF~1\ABCDEF~1\
, która ma tylko 102 znaki.W XP nie robi tego, zamiast tego zdecydowanie odmawia utworzenia dłuższej ścieżki niż jest obsługiwana.
Naprawdę interesujące byłoby dowiedzieć się, jak Eksplorator Windows 7 obsługuje „zbyt długie ścieżki”, gdy
NtfsDisable8dot3NameCreation
jest ustawiona ta opcja.źródło
\\?` doesn't work with
rmdir`.\\?\C:\dir\dir\dir\dir
dosłownie ominąć MAX_PATH; nie ma tu żadnych „zmiennych”. (Ale jak powiedziałem, z jakiegoś powodu nie działa zrmdir
innymicmd.exe
wbudowaniami.)md C:\01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
Nie zadziała, ponieważ system plików ma wystarczające informacje, aby określić, że całkowita długość ścieżki wyniesie 263 znaków, więc zawiedzie.Możesz skrócić ścieżkę, używając
subst
do utworzenia dysku wirtualnego:Zmień na dysk wirtualny:
Teraz możesz usunąć pliki:
Usuń dysk wirtualny:
Usuń katalog:
źródło
C:\TEMP\dir1\dir1\dir1
, spowoduje to skrócenie jego części, co pozwoli ci wejść. To jest jak twoja sugestia zmiany nazwy, ale zamiast tego z mapowaniem. ;):-)
Napisałem małą aplikację C #, aby pomóc mi usunąć podobną bardzo głęboką strukturę wygenerowaną przez nieostrożne użycie Robocopy i kopii zapasowej z Homeserver; domyślnie Robocopy traktuje wspólne punkty jak zwykłe foldery ... :-( Możesz skończyć z wielkim bałaganem, nie zauważając go.
Narzędzie jest dostępne w CodePlex z plikami źródłowymi, z których każdy może korzystać.
źródło
Jakiś czas temu stworzyłem mały, niezależny plik wykonywalny narzędzia o nazwie DeleteFiles , którego można użyć do łatwego wykonania tego zadania.
Za pomocą tego niezależnego narzędzia możesz po prostu:
aby usunąć całą strukturę folderów. -r przekształca hierarchię folderów od katalogu początkowego w dół, -f usuwa wszystkie puste foldery (które będą wszystkimi, jeśli użyjesz . jako specyfikacja pliku). DeleteFiles obsługuje ścieżki dłuższe niż limit Windows MAX_PATH, więc będzie dobrze działać na głęboko zagnieżdżonych folderach.
DeleteFiles jest darmowy i open source i możesz pobrać kod binarny lub źródłowy z GitHub lub zainstalować bezpośrednio za pomocą Chocolatey
źródło
> NUL
do końca może przyspieszyć proces.Prosty i łatwy teraz
Stawałem czoła temu samemu problemowi od tak długiego czasu, gdy moduły node_moduły bardzo zagnieżdżały foldery. w końcu stworzył skrypt, aby naprawić to, co może usuwać foldery przez skracanie ścieżek.
https://github.com/dev-mraj/fdel
źródło
Podczas pracy z Sikuli zostałem wciągnięty w pętlę rekurencyjną Calculator.sikuli w programie, który stworzył niezliczoną ilość reżimów „kalkulator.sikuli.calculator.sikuli”. Mogę przenieść drzewo, ale nazwa ścieżki jest zbyt długa, aby ją usunąć.
Po wypróbowaniu kilku rozwiązań z popd loop, Scandisk i nigdzie (zauważalnie) nigdzie ...
Napisałem ten skrypt, aby „zagłębić się” w powtarzające się katalogi (w katalogu o nazwie „a”), przenieść je (do katalogu o nazwie „b”), a następnie usunąć przycięte drzewo, przenieść je z powrotem (do „a”) , i powtórz:
Remdirs.bat
To jest tylko wezwanie do ponownego uruchomienia pliku wsadowego.
źródło
Mieliśmy taki problem w pracy, gdy zaćmienie postanowiło stworzyć śmieci na dyskach twardych. Naprawiliśmy to za pomocą funkcji robocopy / MIR, aby utworzyć kopię lustrzaną pustego katalogu w zagnieżdżonym katalogu.
źródło
Spróbowałbym otworzyć wiersz polecenia i uruchomić:
Jeśli to nie zadziała, włożę dysk CD do drzewa katalogów i spróbuję usunąć podzbiór katalogów - powiedzmy 20 najbardziej wewnętrznych katalogów - a następnie zacznę pracę.
źródło
;-)
Jeśli jest to folder sieciowy, po prostu udostępnij katalog macierzysty tego katalogu i zamapuj go na dysku na komputerze lokalnym, a następnie usuń folder.
źródło
Otwórz wiersz polecenia.
Przejdź do folderu / katalogu, który zawiera najwyższy „katalog 1” (przyjmiemy C: \)
Edytuj (po dodaniu komentarzy) :
Inne pomysły:
MS oferuje informacje na temat sposobów radzenia sobie z problemem (wiele pomysłów, aby spróbować) tutaj .
Jest też to narzędzie (nigdy nie używałem go osobiście) - TooLongPath .
Być może napisz coś (ponieważ masz Eclipse), który nawiguje do samego końca, a następnie wycofuje się o jeden poziom na raz, usuwając go w miarę upływu czasu?
źródło
Inne rozwiązanie: pobierz Total Commander. Jest to bardzo przydatny program, nie tylko dlatego, że rozpoznaje długie nazwy plików.
Niezarejestrowana wersja jest nagware, ale w pełni funkcjonalna, wykona zadanie.
źródło
Można to zrobić bezpośrednio z wiersza polecenia lub w pliku wsadowym, tworząc ścieżkę UNC do katalogu, który chcesz usunąć
więc zamiast
posługiwać się
Ścieżki w stylu UNC mogą być znacznie dłuższe i ominąć limit 260 znaków.
źródło
The path \\?\C:\temp\wqiyretiuqyertiuyqwteiyrutqwuiyertiqrqweirqyert\wqteriuwqyetriuqwteiryutwiuertiuyqerieerrt\IOQWUE~1\QIWUYE~1\OIUQYW~1\OIUQYW~1\OIUQYW~1\OIUQYW~1\OIUQYW~1\OIUQYW~1\OIUQYW~1\OIUQYW~1\OIUQYW~1\ OIUQYW~1\OIUQYW~1\OIUQYW~1\OIUQYW~1\OIUQYW~1\OIUQYW~1\OIUQYW~1 is too long.
Windows 7 64-bitowyGdy mam ten problem, po prostu zmieniam nazwy niektórych folderów na znacznie krótsze, a następnie, gdy łączna ścieżka jest wystarczająco krótka, usuwa OK. Nie są potrzebne żadne dodatkowe narzędzia.
źródło
ren
polecenie zakończy się niepowodzeniempath too long
.Miałem ten sam problem, tyle że został utworzony przez rekurencyjne zadanie Cobian Backup. Okazuje się, że darmowe oprogramowanie Cobian zawiera aplikację Deleter, która może bardzo szybko usunąć te irytujące zagnieżdżone foldery.
Znajduje się pod menu narzędzi.
źródło
Zetknąłem się z tym samym problemem związanym z katalogiem o głębokości katalogów ponad 5000, co niektóre aplikacje Java, i napisałem program, który pomoże ci usunąć ten folder. Cały kod źródłowy znajduje się w tym linku:
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
Twój system plików może być uszkodzony. Uruchom program chkdsk, aby sprawdzić, czy coś naprawia, a następnie spróbuj usunąć folder.
źródło
MAX_PATH=255
). Może się to zdarzyć nawet w przypadku nieuszkodzonego systemu plików.