To pytanie ma już odpowiedź tutaj:
Moja żona ma kilka plików i folderów, które w jakiś sposób zakończyły się nazwami plików, które spowodowały, że nie można ich usunąć (nie można ich usunąć) w zwykły sposób lub za pomocą wiersza polecenia. Uważam, że nazwy plików są zbyt długie ze względu na głębokość struktur folderów. Czy ktoś wie o dobrym narzędziu do czyszczenia takich plików?
CTRL
+DELETE
jest moim zdaniem najłatwiejszą metodą ...Odpowiedzi:
Jeśli chcesz całkowicie usunąć katalog, który zawiera długie ścieżki,
robocopy
wykonuje BARDZO dobrą robotę:Działa to, ponieważ robocopy wewnętrznie korzysta z wersji funkcji Win32 obsługujących Unicode, z
\\?\
prefiksem ścieżek plików ; funkcje te mają limit 2¹⁶-1 (32 767) znaków zamiast 259.Być może trzeba będzie przejść przez ten proces więcej niż raz, aby pozbyć się wszystkich plików.
źródło
Z wiersza polecenia:
Spowoduje to wyświetlenie listy plików / folderów w formacie krótkich nazw. Następnie użyj krótkiej nazwy dokładnie tak, jak napisano, aby usunąć plik:
źródło
dir
lubcd ..
.dir
użyćpushd
. To działało dla mnie.Robię postępy na ścieżce, zmieniając nazwę każdego kolejnego folderu nadrzędnego na „1” i próbuję usunąć. Skutecznie skracasz ścieżkę za każdym razem i nigdy nie musiałem pracować nad więcej niż 4 lub 5 katalogami, dopóki nie będę w stanie usunąć całej struktury katalogów (która może, ale nie musi być taka, jakiej chcesz). Możesz to zrobić również z ostatniego folderu podrzędnego i pracować w górę lub w dół.
źródło
mv * 1 && cd 1
. Nie działało to, gdy w katalogu znajdowało się wiele plików, ale w tym momencierm -rf *
zwykle działało .W niektórych programach, w tym Command Prompt (
cmd.exe
), można ominąć limit długości pliku, poprzedzając pełną ścieżkę w\\.\
następujący sposób:źródło
rm -rf \\directoryname
Sztuczka, której użyłem, aby ominąć ograniczenie długości „pełnej ścieżki i nazwy pliku” w celu przeniesienia, skopiowania lub usunięcia czegoś, polega na skróceniu go poprzez „włamanie się” do połowy (lub więcej) za pomocą zmapowanej litery dysku wskazującej folder w dół ścieżki .
więc masz c: \ some \ long \ path ... \ i \ foo \ bar \ folder \ oldfiles \ myoldfile.txt.
Następnie zamapuj dowolną literę dysku gdzieś na ścieżce, tak aby pierwszy fragment ścieżki miał tylko kilka znaków. Warunek wstępny - folder musi znajdować się w folderze współdzielonym (który może już być, jeśli znajduje się na serwerze, gdzie musiałem to zrobić), a jeśli jeszcze go nie ma, wybierz folder gdzieś na ścieżce i udostępnij to. W zależności od środowiska i poziomu paranoi zezwól wszystkim na modyfikowanie dostępu do udziału, o ile uprawnienia NTFS są dość restrykcyjne. Jeśli chcesz, po prostu zezwól na modyfikację praw tylko do własnego konta.
Teraz przejdź do folderu współdzielonego lub jednego w nim i udostępnij go lub użyj wiersza poleceń w następujący sposób. Załóżmy, że udostępniasz folder „foo” jako „fooshare”, możesz to zrobić
a dysk X: wskazuje teraz bezpośrednio folder „foldery” w tym udziale, więc „x: \ oldfiles \ myoldfile.txt” jest teraz dość krótki.
(„/ Persistent: no” oznacza, że to nie przetrwa następnego restartu i nie pomyli cię później. Nie zapomnij cofnąć udostępniania folderu po zakończeniu).
Pamiętaj, że nie trzeba udostępnić folder zawierający plik koniecznie, jeśli znajduje się ona wewnątrz folderu udostępnionego można po prostu mapy poprzez udział i zagnieżdżonych folderów do folderu docelowego blisko do pliku i że działa dobrze.
Musiałem użyć tej techniki, wykonując masywną robotę między dwoma serwerami, gdy zdaliśmy sobie sprawę, że użytkownicy zamapowali dyski dość głęboko w strukturze folderów, więc mogli używać 255 znaków, ale przekraczało to całkowitą długość ścieżki do pliku po uzyskaniu dostępu z lokalnego katalogu głównego dysku.
źródło
subst x: C:\Some\first\part\of\the\long\path
a następnie usuń dysk za pomocąsubst x: /d
subst
Sztuczka wydaje się działać dobrze, tak długo, jak nazwa pliku nie jest tak długo, jak na co iść ponad 260 znaków, nawet u podstaw jazdy.net use
, możesz użyć domyślnych udziałów administratora:net use x: \\localhost\c$\bar\folders /persistent:no
Najprostszym sposobem, jaki znalazłem, jest uruchomienie z płyty CD z Ubuntu na żywo.
Alternatywnie możesz utworzyć folder współdzielony w połowie ścieżki, a następnie zamapować na niego dysk sieciowy i usunąć go z zamapowanego folderu (nawet na tym samym komputerze)
źródło
Zmień nazwę katalogu wytnij / wklej plik w innym miejscu, a następnie usuń go. Działa tutaj.
Lub po prostu z wiersza poleceń, jeśli nie masz ochoty przezwyciężyć kłopotów.
źródło
node_modules
foldery), przeciągnij go na pulpit i usuń. Opłucz i powtórz, gdy przejdziesz kilka folderów jednocześnie. Co za okropny problem.Prawdopodobnie nie najlepszy sposób i jestem zainteresowany tym, co wymyślą inni -
Miałem to raz i spróbowałem kilku rzeczy bez powodzenia. Zamiast szukać dobrego narzędzia, uruchomiłem ponownie z dyskiem Windows, poszedłem do konsoli odzyskiwania i po prostu usunąłem stamtąd. Pracowałem po raz pierwszy i naprawdę dobrze!
Zrobiłem też Google dla ciebie i znalazłem to - DelinvFile wygląda dobrze, ale nie może tego ręczyć.
Edycja - Ostrzeżenie, właśnie zobaczyłem, że powyższe jest tylko próbą - Może nie tak dobre, jak myślałem na początku!
źródło