2009-09-23 15:56:39 +0000 2009-09-23 15:56:39 +0000
203
203

Jak usunąć plik w systemie Windows o zbyt długiej nazwie pliku?

Moja żona ma kilka plików i folderów, które w jakiś sposób spowodowały, że nie można ich usunąć (nie można ich usunąć) w normalny sposób lub za pomocą linii poleceń. Uważam, że nazwy plików są zbyt długie ze względu na głębokość struktury folderów. Czy ktoś wie o dobrym narzędziu do czyszczenia takich plików?

Odpowiedzi (8)

428
428
428
2012-08-29 13:38:16 +0000

Kiedy chcemy całkowicie usunąć katalog i zawiera on długie ścieżki, robocopy BARDZO dobrze się spisuje:

mkdir empty_dir
robocopy empty_dir the_dir_to_delete /mir
rmdir empty_dir
rmdir the_dir_to_delete

To działa, ponieważ robocopy wewnętrznie [ używa świadomych Unicode wersji funkcji Win32, z prefiksem \?Kiedy chcemy całkowicie usunąć katalog i zawiera on długie ścieżki,robocopy` BARDZO dobrze się spisuje:

mkdir empty_dir
robocopy empty_dir the_dir_to_delete /mir
rmdir empty_dir
rmdir the_dir_to_delete

To działa, ponieważ robocopy wewnętrznie używa świadomych Unicode wersji funkcji Win32, z prefiksem dla ścieżek plików ; funkcje te mają limit znaków 2¹⁶-1 (32,767) zamiast 259.

Być może będziemy musieli przejść przez ten proces więcej niż raz, aby pozbyć się wszystkich plików.

91
91
91
2009-09-23 16:01:40 +0000

Z wiersza poleceń:

dir /X

Będzie to lista twoich plików/folderów w formacie krótkiej nazwy. Następnie użyj nazwy skróconej dokładnie takiej, jaką napisano, aby usunąć plik:

del LONGF~1.txt
53
53
53
2009-09-23 17:40:55 +0000

Poruszam się po ścieżce, zmieniając nazwę każdego kolejnego folderu nadrzędnego na “1” i próbując go usunąć. Za każdym razem skutecznie skracasz ścieżkę, a ja nigdy nie musiałem pracować w więcej niż 4 lub 5 katalogach, aż w końcu będę mógł usunąć całą strukturę katalogów (która może być tym, co chcesz, ale nie musi). Możesz to zrobić również z ostatniego folderu dziecięcego i pracować swoją drogą w górę lub w dół.

13
13
13
2009-09-23 16:12:29 +0000

W niektórych programach, w tym Command Prompt (cmd.exe), można obejść limit długości pliku poprzez prefiksowanie pełnej ścieżki z \.W niektórych programach, w tym Command Prompt (cmd.exe`), można obejść limit długości pliku poprzez prefiksowanie pełnej ścieżki z w następujący sposób:

\.\C:\some directory\other directory\a file with long name
13
13
13
2012-02-21 17:18:15 +0000

Sztuczka, której użyłem, aby obejść ograniczenie długości “pełnej ścieżki i nazwy pliku” w celu przeniesienia, skopiowania lub usunięcia czegoś, polega na skróceniu go przez “włamanie” do połowy (lub więcej) przy użyciu mapowanej litery dysku wskazującej na folder w dół ścieżki.

więc masz c:\u00261}długą ścieżkę…\i\u00261}foldfiles\u00261}myoldfile.txt.

Następnie zmapować dowolną literę dysku do gdzieś wzdłuż ścieżki, tak aby pierwszy kawałek ścieżki stał się tylko kilka znaków długości. Pre-requisite - folder musi znajdować się w folderze współdzielonym (którym może być już, jeśli znajduje się na serwerze, czyli tam, gdzie musiałem to zrobić), a jeśli jeszcze nie znajduje się, wówczas należy wybrać folder gdzieś w ścieżce i udostępnić go. W zależności od twojego środowiska i poziomu paranoi, pozwól każdemu modyfikować dostęp do akcji tak długo jak uprawnienia NTFS są dość restrykcyjne. Jeśli chcesz, po prostu pozwól modyfikować prawa tylko do własnego konta.

Teraz przejdź do folderu współdzielonego lub jednego wewnątrz niego i udostępnij go, lub użyj linii poleceń w następujący sposób. Załóżmy, że folder współdzielony “foo” jest “fooshare”, wtedy możesz zrobić

net use x: \mycomputername\fooshare\bar\folders /persistent:no

i X: dysk wskazuje teraz bezpośrednio na folder “foldery” wewnątrz tego folderu, więc “x:\pliki \myoldfile.txt” jest teraz dość krótkie.

(The “/persistent:no” oznacza, że nie przetrwa kolejnego restartu i wprowadzi Cię w błąd później. Nie zapomnij o odłączeniu folderu, gdy skończysz)

Pamiętaj, że nie musisz koniecznie udostępniać folderu zawierającego plik, jeśli znajduje się on już wewnątrz folderu udostępnionego, możesz po prostu mapować przez folder udostępniony i zagnieżdżone foldery do folderu docelowego near do pliku i to działa dobrze.

Musiałem użyć tej techniki robiąc masywną robokopię pomiędzy dwoma serwerami, kiedy zdaliśmy sobie sprawę, że użytkownicy zmapowali dyski dość głęboko w strukturze folderów, więc mogli użyć 255 znaków stamtąd, ale to przekroczyło całkowitą długość ścieżki dostępu do pliku, kiedy uzyskaliśmy dostęp z głównego dysku lokalnego.

9
9
9
2009-09-23 15:59:00 +0000

Najprostszym sposobem, jaki znalazłem, jest uruchomienie z żywej płyty CD ubuntu.

Jako alternatywę można utworzyć współdzielony folder w połowie ścieżki, a następnie zmapować do niego dysk sieciowy i usunąć go z zmapowanego folderu (nawet na tej samej maszynie).

5
5
5
2009-09-23 19:39:20 +0000

Zmień nazwę katalogu wycinania/wklejania pliku gdzieś indziej, a następnie usuń go. Działa tutaj.

Albo po prostu z wiersza poleceń, jeśli nie masz ochoty na kłopoty.

1
1
1
2009-09-23 16:00:00 +0000

Prawdopodobnie nie jest to najlepszy sposób i jestem ciekawa, co inni wymyślą -

miałam to raz i próbowałam kilku rzeczy bez powodzenia. Zamiast szukać dobrego narzędzia, zrestartowałem się z dyskiem Windows w, poszedłem do konsoli odzyskiwania i po prostu skasowałem go stamtąd. Zadziałało za pierwszym razem i naprawdę dobrze!

Również, po prostu zrobił Google dla Ciebie i znalazłem to - DelinvFile Wygląda dobrze, ale nie może ręczyć za to.

Edit - Ostrzeżenie, właśnie zobaczyłem powyżej jest tylko próba - Może nie tak dobry, jak myślałem!