Jak usunąć katalogi ze ścieżką / nazwami zbyt długimi do normalnego usunięcia


380

Wydaje się, że system Windows ma ograniczenie długości nazw plików podczas próby ich usunięcia, ale nie uniemożliwi to utworzenia tych plików.

Nasz proces kompilacji tworzy szereg plików tymczasowych (wiele kompiluje się z WSDL), które działają z tym limitem. Nasz skrypt ant jest w stanie w jakiś sposób usunąć je podczas czyszczenia, ale czasami muszę usunąć katalog workarea (gdzie idą wszystkie pliki tymczasowe) bez faktycznego czyszczenia z ant.

To są te same błędy, co w tym pytaniu , ale odpowiedzi tam naprawdę nie działają, ponieważ mam do czynienia z katalogiem, a nie plikiem, i nie zawsze wiem, jakie konkretne pliki lub podkatalogi powodują problem. I staram się unikać ręcznego procesu (innego niż uruchamianie pojedynczego polecenia), aby je faktycznie usunąć.

Jeśli spróbuję usunąć katalog z Eksploratora, pojawia się błąd

Cannot delete [file name]: The file name you specified is not valid or too long.  
Specify a different file name

Próba Remove-Itemw programie PowerShell powoduje następujący błąd:

Remove-Item : The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters.
At line:1 char:12
+ Remove-Item  <<<< -force -Recurse <directory>

Czy ktoś wie o jakichkolwiek narzędziach lub łatwych sposobach obejścia tego błędu usuwania bez konieczności ręcznego wyszukiwania plików powodujących problemy i przenoszenia ich / zmiany nazwy?


2
Znalazłem rozwiązanie tuż przed opublikowaniem tego pytania, ale ponieważ inni mogą się z tym spotkać, postanowiłem je opublikować, aby mogli znaleźć rozwiązanie, na które natknąłem się.
Herms,

Och, wiem, ale generalnie, kiedy robię takie rzeczy, zostawiam na chwilę pytanie „bez odpowiedzi”, aby sprawdzić, czy ktoś inny ma lepsze rozwiązanie.
Herms,

Przez Far najprostszego rozwiązania: youtube.com/watch?v=qQTyTprFAOg
Taw

za pomocą Ubuntulub dowolnego innego Linux Bootable CDmożemy Ubuntutymczasowo uruchomić komputer lub inny system operacyjny. następnie możemy wybrać folder i łatwo go usunąć.
Kelum Priyadarshane

1
To starsze pytanie zawiera także kilka interesujących odpowiedzi: superuser.com/questions/45697/…
AdamV

Odpowiedzi:


421

Użyj Menedżera plików 7-Zip, aby je usunąć.

Jeśli nadal masz problemy, upewnij się, że używasz Shift+ Deletew 7-Zip File Manager. W przeciwnym razie system Windows spróbuje przenieść je do Kosza (co ponownie się nie powiedzie).


5
Dzięki - pozbyłem się drzewa dir, które poszło nieco rekurencyjnie i było zbyt głębokie, aby usunąć del / rmdir / rm / explorer
Martin Beckett

63
pracował wielką pomocą klawiszy Shift + Del - 7zip nie mógł wysyłać pliki długo pathed do kosza ....
Cori

66
+1 7zip. Musisz przejść do folderu, a NASTĘPNIE użyć shift + Deljak powiedział @cori. Jeśli wybierzesz Deleteopcję z menu kontekstowego, nie powiedzie się ona tam. shift + Delto!
Urda,

8
7zip nie działał dla Win7 64, więc Linux działał.
Erik Friesen

13
Głosuję za tym, ponieważ za pomocą 7zip możesz usunąć również folder, w którym znajdują się długie zagnieżdżone foldery. Miałem problem z folderem node_module, który zawierał bzdury zagnieżdżonego folderu i nie byłem w stanie go usunąć. 7zip naprawiony z folderu podstawowego bezbłędnie. +1
Gruber

310

Żadna z pozostałych (darmowych) odpowiedzi tutaj nie działała dla mnie, ale znalazłem jedną na innej stronie:

rimraf <dir>

rimraf to pakiet Node.js , więc musisz zainstalować Node.js, który zawiera npm . Następnie możesz uruchomić:

npm install -g rimraf

Następnie możesz uruchomić rimrafz wiersza poleceń.

Znalazłem to rozwiązanie, ponieważ sam npm powodował ten problem z powodu sposobu zagnieżdżania zależności.

Nawiasem mówiąc, rimrafotrzymuje swoją nazwę od polecenia UNIX rm -rf, które rekurencyjnie usuwa pliki i foldery.


7
Próbowałem na wiele sposobów. To po prostu działa idealnie!
Duckegg,

2
Najlepsza odpowiedź ze wszystkich :) tak, łatwa, łatwa
Al-Mothafar,

2
To powinna być zaakceptowana odpowiedź.
NINCOMPOOP,

13
Twoje rozwiązanie działa, ale jest to tak f ## k-up, że muszę użyć modułu węzła js do usunięcia folderów modułów węzła js ... Nie chcę już żyć na tej planecie
Benoit P

4
Węzeł stworzył problem przede wszystkim dla mnie ... tak interesujący ... że oni też mają rozwiązanie.
Eric J.

141

Nie ma potrzeby instalowania żadnego programu do rozwiązania tego problemu.

Ten problem można łatwo rozwiązać za pomocą robocopypreinstalowanej wersji systemu Windows Vista wprowadzonej na rynek w 2006 roku.

Na przykład rmdir /S /Q <dir>zgłaszano, że w niektórych przypadkach zawodzi. Nie ma potrzeby używania 7zip ani żadnego innego narzędzia innej firmy. Powershell to przesada. Cygwin może działać, ale może nie być zainstalowany. Skupmy się narobocopy

Chodzi o to

  1. użyj, robocopyaby skopiować + zaktualizować
  2. z nowego pustego folderu
  3. do folderu, który chcesz usunąć, cel.

Po uruchomieniu robocopykatalog docelowy również byłby pusty.

Te instrukcje dotyczą wiersza poleceń. Wystarczy otworzyć wyszukiwanie w systemie Windows, wpisać cmdi nacisnąć Enter.

Powiedzmy, że celem usuwania jest:

C:\delete\this folder\with a very long name

Postępujemy następująco:

  1. Najpierw utwórz pusty katalog, fi C:\emptyfolder.

    mkdir C:\emptyfolder
    
  2. Skopiuj + aktualizuj z pustego katalogu do celu, korzystając z opcji /purge

    robocopy c:\emptyfolder "C:\delete\this folder\with a very long name" /purge
    
  3. Usuń pusty katalog. Już go nie potrzebujesz.

    rmdir c:\emptyfolder
    

Ponieważ w katalogu źródłowym ( C:\emptyfolder) nie ma plików ani folderów , po prostu C:\delete\this folder\with a very long namerekursywnie usuwa pliki i foldery w katalogu docelowym ( )!

  • Ostatnia sztuczka: możesz uniknąć pisania ręcznie

    C:\delete\this folder\with a very long name
    

    Przeciągając folder z okna Eksploratora i upuszczając w oknie Terminal / cmd.

Uwaga : usunięte pliki nie trafią do folderu kosza ! Po usunięciu plików nie można odzyskać.

(Zaczerpnięte z „Path too long? Use Robocopy” autorstwa BVLANGEN )

PS: Zdaję sobie sprawę, że ta odpowiedź była tutaj, mniej dydaktycznie. Jak usunąć plik w systemie Windows ze zbyt długą nazwą pliku? [duplikować]

Benoit dodał:

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


11
Dziękuję dobry panie !! To powinna być zaakceptowana odpowiedź, ponieważ wszystkie pozostałe albo nie działały, albo wymagały narzędzia innej firmy . :)
MickyD,

Działa to doskonale ... nie muszę niczego instalować (o ile wiem) i jest szybkie. To powinna być zaakceptowana odpowiedź!
ksumarine

1
Dzięki temu część (lub całość) drzewa katalogów znajduje się pod „c: \ deletefolder” (katalog docelowy). W każdym razie skasowałem wszystko w mgnieniu oka (domyślam się, że pliki były małe) i musiałem ręcznie <Del> „c: \ deletefolder”, katalogi potomne zostały usunięte bez problemu. Działa jak urok. +1, powinna być zaakceptowaną odpowiedzią! :)
rld.

@rld, ale czy „deletefolder” istniał wcześniej? W przeciwnym razie uważam, że powinien być pusty, jeśli był to nowy katalog. W przeciwnym razie to bałagan. Mógłbym dodać ostatni krok dla „rmdir deletefolder”.
hektorpalny

1
W przypadku wysoce rekurencyjnych katalogów ta opcja jest znacznie wolniejsza niż 7zip. Po odczekaniu 20 minut przeanalizowałem je i zdałem sobie sprawę z 7zip, choć nie pokazuje, że postęp działa 50 razy szybciej.
Andy Gauge

84

Myślę, że znalazłem sposób na usunięcie rzeczy cmd. Początkowo próbowałem delpolecenia, ale to nie działało. Potem sobie przypomniałem rmdir. Wykonując następujące czynności:

rmdir /S /Q <dir>

wydaje się działać.


105
Nie działało dla mnie. :(
Andrew Arnott,

pamiętaj, aby wpaść do cmd przed próbą uruchomienia rmdir.
brianpeiris,

8
Dla tych, którzy nie mogą skorzystać z tego rozwiązania, mam alternatywne rozwiązanie, które działało dla mnie (ze zbyt długą ścieżką / nazwami plików): Przenieś plik (i) / katalog do C: \, aby skrócić ścieżkę, a następnie usuń stamtąd.
Anders Sandberg Nordbø

6
Możliwe jest posiadanie katalogów, dla których to rozwiązanie nie będzie działać, które 7-Zip może usunąć. Właśnie mi się to przydarzyło.
SamStephens,

2
To rozwiązanie zapewnia niespójne wyniki. Proszę nie głosować.
hectorpal

29

Narzędziem, którego użyłem, gdy miałem ten problem, było FastCopy . Z rozwijanego menu wybrałem Usuń wszystko , wybrałem katalog, który chciałem usunąć, i kliknąłem Usuń wszystko .

Zrzut ekranu okna dialogowego usuwania FastCopy

FastCopy jest przenośny (nie wymaga instalacji), dostępne są wersje 32-bitowe i 64-bitowe.


3
Jeśli szukasz narzędzia wiersza polecenia, możesz użyć małego narzędzia, które opublikowałem na GitHub ( github.com/epsitec/Tools-RecursiveDelete ).
Pierre Arnaud

Miałem rekurencyjnie wygenerowany zestaw zagnieżdżonych plików / folderów. To było jedyne działające rozwiązanie
Pierluigi,

2
Działa to dla mnie, gdy nie udało się wykonać wiersza poleceń, próba 7zip nie powiodła się. nawet obsługa Microsoft była zepsuta!
Kit Ramos,

To samo tutaj - zacząłem usuwać pliki za pomocą 7zip, ale działało to również bardzo dziwnie i musiałem Shift + Delere każdy katalog wiele razy z rzędu, aby go faktycznie usunąć, ale potem wypróbowałem to narzędzie i działałem jak urok . Uruchomiłem go dwa razy, aby pozbyć się wszystkich plików. Dzięki!
Artanis

Dzięki, dla mnie również jedyne działające rozwiązanie, WIELKIE !!!!
tim

26

Bez instalowania dodatkowego oprogramowania można użyć substpolecenia, aby tymczasowo utworzyć alias do katalogu o długiej nazwie.

np. Jeśli chcesz usunąć folder C:\Very long directory\that exceed\length limit\blah blah blah\abcde\folder to be deleted, możesz użyć polecenia

subst x: "C:\Very long directory\that exceed\length limit\blah blah blah\abcde"

a następnie możesz łatwo usunąć X:\folder to be deletedw Eksploratorze Windows lub w wierszu polecenia. Aby usunąć tymczasowy alias litery dysku, użyj polecenia

subst x: /d

Próbowałem wszystkich innych odpowiedzi (w tym odpowiedzi na inne podobne pytania) i to była jedyna, która skończyła się dla mnie. I to było zdecydowanie najszybsze.
glenneroo

1
To zdecydowanie najlepsza odpowiedź: proste, wbudowane funkcje, brak bałaganu w rejestrze. Powinna być zaakceptowana odpowiedź.
Kevin Roche,

Łatwo najczystsza i najprostsza metoda, dziękuję Kenneth.
Seth

Ta odpowiedź mnie przeraża, bo mam dysk X: Nie ma tu wystarczających informacji i nie polecam, aby ludzie postępowali zgodnie z tym bez dalszych wyjaśnień.
qodeninja

25

Cygwin rm -rfdziała dobrze na długich ścieżkach!


3
Cygwin działał dla mnie idealnie! Właśnie zrobiłem -rm -rf i wszystkie pliki zostały usunięte.
Ranhiru Jude Cooray

3
Pracowałem także dla GNU bash, wersja 4.1.10 (4)
wydanie

2
Świetnie sprawdził się podczas uruchamiania z okna poleceń Git Bash. Zainstalowałem do tego GitGui.

22

Po prostu upuść z Powershell do polecenia, uruchamiając poniżej:

Cmd /C "rmdir /S /Q <dir>" 

3
„Katalog nie jest pusty”. Ups OP chce usunąć niepusty folder.
leye0

czym to się różni od odpowiedzi @herms?
bigbadmouse,

18

Rozwiązanie Dentrasi jest dla mnie najlepsze, ale chciałem zamieścić konkretne kroki w odpowiedzi na najwyższym poziomie.

  1. Pobierz i zainstaluj najnowszą stabilną wersję 7zip .
  2. Uruchom 7zip File Manager ( 7zfm.exe ).
  3. W Menedżerze plików 7zip nawiguj, aby zobaczyć nazwę folderu, który chcesz usunąć (tj. Jesteś w folderze nadrzędnym).
  4. Przytrzymaj przycisk Shift.
  5. Kliknij przycisk „ Usuń ” na klawiaturze lub na pasku narzędzi 7zip File Manager; upewnij się, że nadal przytrzymujesz klawisz Shift .
  6. Kliknij przycisk „ OK ”; upewnij się, że nadal przytrzymujesz klawisz Shift .

Dobra próba, ale nadal nie działała dla mnie z dziesiątkami folderów rekurencyjnych. Działał tylko rimraf.
Julian Knight

@JulianKnight: Tak, to podejście również nie działało dla mnie w 100% przypadków. Chciałem tylko o tym wspomnieć, ponieważ był to jeden z prostszych procesów i przynajmniej działał przez część czasu. Jedyne, co odkryłem, że to działało w 100% czasu, to podejście skryptowe modułu Powershell + NTFSSecurity, które opisałem poniżej. Rimraf IIRC zawiódł, kiedy zostałem wezwany, i właśnie w ten sposób wpadłem w ten bałagan. Zobacz ten wątek Node.js, aby uzyskać szczegółowe informacje: github.com/nodejs/node-v0.x-archive/issues/…
Mass Dot Net

Tak, zawsze będą takie problemy. W rzeczywistości to był kod instalacyjny biblioteki Arduino IDE, który zrobił mnie w (Java), przypadkowo wybrałem folder zawierający biblioteki jako folder do zainstalowania biblioteki i odszedł! Zabiłem ten proces, gdy tylko zdałem sobie sprawę, ale miałem już 10 kilogramów folderów (cholera i7 / SSD!) Kolejne główne wydanie NPM ma pomóc w rozwiązaniu wielu problemów z głęboką instalacją biblioteki dla Węzła, ponieważ zależności powinny być spełnione z znacznie bardziej płaska struktura. Nadal cieszę się, że ktoś postawił mnie na rimrafie - łatwo i za darmo.
Julian Knight

@JulianKnight - Tak, dzień lub dwa lata temu ktoś powiedział mi, że npm3 powinien pomóc w rozwiązaniu tych problemów, zapobiegając głęboko zagnieżdżonym strukturom folderów zależności.
Mass Dot Net

Nie wiem, czy to „zapobiega”, ale bardziej rozsądnie traktuje zagnieżdżone zależności, więc jeśli twoja główna aplikacja wymaga biblioteki X v1.0 i biblioteki Y wymaga Z, która także wymaga X v1.0, zostanie użyta biblioteka najwyższego poziomu. Obecnie Z zainstalowałby własną wersję X.
Julian Knight

11

Istnieją dwie rzeczy, które nie zostały jeszcze wspomniane w istniejących odpowiedziach.

  1. Aby uzyskać dostęp do długich ścieżek, możesz użyć prefiksu ścieżki o rozszerzonej długości
  2. W systemie Windows 10 możesz włączyć obsługę długich ścieżek do ogólnego użytku - pamiętaj jednak, że nie wszystkie aplikacje będą działać z długimi ścieżkami, powinieneś przetestować starsze oprogramowanie. Tylko oprogramowanie z odpowiednim wpisem manifestu będzie mogło z niego skorzystać.

Prefiks długiej ścieżki

Interfejs API systemu Windows ma specjalną funkcję, która obsługuje nazwy ścieżek Unicode o długości do 32 000 znaków (każdy element ma długość do 255 znaków).

Jest to często błędnie nazywane nazewnictwem UNC, ale nie jest tak, że jest powiązane.

Prefiks używany do informowania interfejsu API o używaniu długich ścieżek Unicode jest następujący \\?\:

\\?\D:\very long path

Nazwy UNC są zwykle używane w odniesieniu do ścieżek na zdalnych serwerach w formularzu \\servername\path name\file name. Możesz to połączyć z prefiksem długiej ścieżki, aby:\\?\UNC\server\share

Zauważ, że niektóre źle napisane, ale niestety dość powszechne aplikacje nie obsługują ścieżek plików UNC ani prefiksu długiej ścieżki.

Odniesienie: https://msdn.microsoft.com/en-gb/library/windows/desktop/aa365247(v=vs.85).aspx#maxpath

Obsługa długiej ścieżki

Jest to opcja, która została dodana do najnowszych wersji systemu Windows 10. Nie jest ona w momencie pisania domyślnie aktywowana, ponieważ wymaga szczególnej obsługi aplikacji. Co ciekawe, PowerShell ma wbudowaną obsługę, więc włączenie tej opcji pozwoli na użycie długich ścieżek bezpośrednio w skryptach PowerShell.

Możesz go aktywować za pomocą edytora zasad grupy, jeśli masz taką wersję systemu Windows. Lub możesz po prostu użyć następującej zmiany rejestru. Jak zawsze, wykonaj kopię zapasową sekcji rejestru, którą zmieniasz, zanim cokolwiek zrobisz.

  1. Uruchom regedit.exe.
  2. Potwierdź monit UAC.
  3. Przejdź do klucza: HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy Objects\{48981759-12F2-42A6-A048-028B3973495F}Machine\System\CurrentControlSet\Policies
  4. Utwórz lub zmień klucz LongPathsEnabled.
  5. Jeśli nie istnieje, kliknij prawym przyciskiem myszy Zasady i wybierz z menu polecenie Nowa> Wartość słowa (wersja 32-bitowa).
  6. Ustaw LongPathsEnabledsię 1włączyć.

Wszystkie aplikacje z odpowiednimi wpisami manifestu będą teraz miały dostęp do standardowych długich ścieżek POSIX. Powinno to obejmować aplikacje ze Sklepu Windows.

Odniesienie: https://blogs.msdn.microsoft.com/jeremykuhne/2016/07/30/net-4-6-2-and-long-paths-on-windows-10/

AKTUALIZACJA 2017-04-09

@maoizm zwrócił uwagę na problem z kluczem rejestru powyżej, więc zrobiłem więcej kopania . Wygląda na to, że możesz teraz ustawić obsługę długich nazw plików za pomocą klucza systemowego:

HKLM\SYSTEM\CurrentControlSet\Control\FileSystem LongPathsEnabled (Type: REG_DWORD)

To nadal działa tylko w przypadku aplikacji, które są specjalnie skonfigurowane do korzystania z niego (wymaga wpisu w pliku manifest.xml aplikacji).

Należy również pamiętać, że w tej metodzie nie można używać względnych nazw ścieżek.


{48981759-12F2-42A6-A048-028B3973495F}Machineczęść ścieżki rejestru będzie inna na każdym komputerze - może nie być oczywiste dla każdego
maoizm

1
@maoizm - dobra uwaga, dziękuję za podkreślenie tego. Proszę zobaczyć moją aktualizację dla alternatywy, jeśli używasz aktualizacji W10 Anniversary lub nowszej.
Julian Knight

Piszę bibliotekę o nazwie FoundationIO i staram się ustawić domyślną długą ścieżkę, czy jest jakaś funkcja, którą mogę wywołać lub makro, którą mogę ustawić, aby obsługa długiej ścieżki była automatycznie włączona dla dowolnego użytkownika mojej biblioteki?
MarcusJ

Cześć Marcus, czy to rodzima biblioteka systemu Windows? Jeśli tak, .NET ma już wymagane wsparcie w ramach odpowiedniego API Windows - przepraszam, że nie znam szczegółów, ponieważ nie jestem programistą .NET lub Win API, ale szczegóły powinny być możliwe do wyszukiwania w MSDN.
Julian Knight

8

Podoba mi się rozwiązanie cmd. Chociaż chcę udostępnić inne obejście, które działa nawet w Eksploratorze: spróbuj skasować nazwy folderów nadrzędnych przed usunięciem: krótsze nazwy skrócą ścieżkę. Powiedzmy, że masz taką strukturę drzewa folderu:

DO:\

.. Projekty

.. .. Some Awesome Project wiosną 2014 r

.. .. .. Pewna aktywność w parku w piątek

.. .. .. .. Bla bla bla bla bla bla bla bla bla bla bla bla

.. .. .. .. .. Rzeczywiste pliki o długich nazwach

W takim przypadku nie można usunąć folderów, nie można usunąć ani zmienić nazwy plików. Jeśli chcesz usunąć całą strukturę folderów lub jej część, możesz tymczasowo zmienić nazwę folderów nadrzędnych i skrócić ścieżkę, a następnie usunąć folder. Nazwy mogą być tylko literami:

DO:\

.. Projekty

.. .. x

.. .. .. y

.. .. .. .. z

.. .. .. .. .. Rzeczywiste pliki o długich nazwach

W moim przypadku chciałem po prostu usunąć cały folder z wieloma podfolderami i plikami. Więc nie dbałem o nazwy folderów.


1
Napisałem małe narzędzie, które właśnie to robi i umieściłem je w GitHub. github.com/epsitec/Tools-RecursiveDelete
Pierre Arnaud

1
Wszystkie polecenia lub Shift + DEL nie działają dla mnie, ale to działa.
larkee

Naprawdę nie działa, gdy masz 10 k zagnieżdżonych folderów
Julian Knight

nie działa również, jeśli jeden z folderów ma naprawdę długą nazwę (nie można zmienić nazwy folderu naruszającego prawa).
aucuparia,

7

Rozwiązanie 7-zip działa świetnie. Inną opcją, jeśli masz zainstalowany git, jest otwarcie powłoki bash i użycie:

rm -f

(lub rm -rfdla folderów)


1
Dla niewtajemniczonych proszę wyjaśnić, w jaki sposób „otwierasz powłokę bash” w systemie Windows?
OMY,

1
@OMY musisz zainstalować git. Następnie z menu Start możesz otworzyć git bash lub jeśli zdecydowałeś się mieć rozszerzenia powłoki po zainstalowaniu git, możesz kliknąć prawym przyciskiem myszy lub w folderze i wybraćGit Bash Here
Użytkownik

4

Sugeruję Total Commander (shareware, ale działa po okresie próbnym z minimalnym ekranem startowym). W ten sposób zawsze rozwiązuję zbyt długie problemy z nazwami plików .


1
Dziękuję panu, że to znalazłem. Problemy z usunięciem folderu node_modules, ponieważ decyduje się na głupie zagnieżdżenie katalogów.
Alias

Cóż, @Alias, Total Commander ułatwia wykrycie tego problemu, przynajmniej dla mnie. Po zidentyfikowaniu takiego problemu chkdsknależy go rozwiązać.
Sopalajo de Arrierez

Wersja 7.0 nie działa, wyświetla komunikat o błędzie i sugeruje wykonanie operacji jako Administrator, co również się nie powiedzie.
izogfif

@izogfif: najnowsza wersja na dziś to 8.52a. Spróbowałbym tego. Nie podajesz szczegółowych informacji o komunikacie o błędzie, ale możesz mieć pewną niespójność w strukturze archiwum, którą należy rozwiązać (przynajmniej dla NTFS) za pomocą „chkdsk c: / f” (przy założeniu dysku C :).
Sopalajo de Arrierez

2

Możesz je również usunąć, używając ich równoważnej krótkiej nazwy. dir /xpokaże ci je.


2

Stworzyłem prosty program Java, który używa robocopy do usuwania plików. Słoik można uruchomić. Aby uzyskać dodatkowe wyjście, uruchom je z linii cmd.

https://drive.google.com/file/d/0B5pSEjxJvt_1WVp1T3puSm1CNjg/view?usp=sharing


2
A jeśli nie chcesz korzystać z Javy, możesz użyć tego narzędzia, które napisałem przy użyciu platformy .NET ( github.com/epsitec/Tools-RecursiveDelete ).
Pierre Arnaud

@PierreArnaud świetne narzędzie. Potrzebowałem czegoś takiego do automatyzacji linii poleceń. @ CamHart też dobra robota od ciebie! Dzięki chłopaki!
amitthk

1

Próbowałem już wszystkich innych odpowiedzi, ale one nie zadziałały (przynajmniej dla mnie).

Natrafiłem na delinfile i działałem całkiem dobrze i dość szybko!

Wersja próbna jest ograniczona do 3 akcji / 15 dni, ale można ją wykorzystać, jeśli chcesz usunąć tylko kilka folderów / plików:


1

Większe katalogi są również przeznaczone do tego zadania. wprowadź opis zdjęcia tutaj

  • Pobieranie
  • Używa wywołania rekurencyjnego z RemoveDirectoryW, aby usunąć istniejące katalogi
  • Korzysta z własnego repozytorium plików dla nowo utworzonych katalogów
  • Pliki można przenosić z katalogów przed usunięciem katalogów zawierających.
  • Szybko, chociaż przejście do początku katalogu to kliknięcie na zagnieżdżony katalog
  • Windows XP (SP3) i nowsze
  • Niepodpisany niezarządzany kod bez instalatora, więc możliwe ostrzeżenie Smartscreen po uruchomieniu z zapasowego folderu, np. Pulpitu.

Więcej informacji na CodeProject .


Przeczytaj Jak polecić oprogramowanie, aby uzyskać porady dotyczące tego, jak powinieneś polecać oprogramowanie. Powinieneś podać przynajmniej link, dodatkowe informacje o samym oprogramowaniu oraz o tym, jak można go użyć do rozwiązania problemu w pytaniu.
DavidPostill

@David: Better? Link był bardzo przydatny, dzięki.
Laurie Stearn,

1

Napotkałem ten problem w systemie Windows 10 i znalazłem to łatwe rozwiązanie.

  1. Wejdź w nieco głębsze drzewo folderów.
  2. Przeciągnij i upuść folder z połowy drzewa do początku drzewa, używając paska adresu.
  3. Jak na moim obrazku przeciągnij i upuść czerwone pole do zielonego pola. (w tym przypadku ścieżka jest krótsza, ale w przypadku długich ścieżek również działa)
  4. Następnie twoja ścieżka staje się krótsza i usuń jak zwykle za pomocą klawisza usuwania.

wprowadź opis zdjęcia tutaj


1

Tutaj znajdziesz idealną odpowiedź (dla plików). Działa w systemie Windows 10.

REM Make sure there is no \ at the end of either path!
robocopy "C:\...\...\...\long\path" "C:\DeleteMe" "FileName" /MOV
REM Note: this ^ can be called many times before...:

REM Finally, recursively delete the higher up DeleteMe directory.
rmdir /S /Q DeleteMe

Zobacz także: https://msdn.microsoft.com/en-us/library/aa365247.aspx#maxpath

Ani jedna alternatywna odpowiedź na 4 pytania nie była wystarczająca dla moich potrzeb. Nie ma za co, świecie.


0

W końcu dowiedziałem się, jak to zrobić za pomocą Powershell. Oto instrukcje, które zastosowałem, aby uruchomić to w systemie Windows 7:

  1. Utwórz nowy folder o nazwie NTFSSecurity w folderze C: \ Users \ XXXX \ Documents \ WindowsPowerShell \ Modules \ NTFSSecurity , gdzie XXXX to nazwa użytkownika systemu Windows. Przykład: jeśli moja nazwa użytkownika to „ aspnyc ”, nowym folderem będzie C: \ Users \ aspnyc \ Documents \ WindowsPowerShell \ Modules \ NTFSSecurity .

  2. Pobierz pakiet modułu PowerShell Security systemu plików - powinien być dostępny jako zwykły plik ZIP.

  3. Otwórz konsolę PowerShell , uruchom Get-Module -ListAvailable i upewnij się, że NTFSSecurity pojawia się gdzieś na liście zarejestrowanych modułów.
  4. W konsoli Powershell uruchom Import-Module NTFSSecurity .
  5. W konsoli PowerShell uruchom polecenie Remove-Item2 „YYYY” -Recurse , gdzie YYYY to ścieżka systemu Windows do folderu, który chcesz rekurencyjnie usunąć (np. C: \ Potatoes \ Badgers \ FolderToDelete ).

0

W końcu dowiedziałem się, jak to zrobić za pomocą Powershell na Windows 10, gdzie poszczególne nazwy plików były zbyt długie. Oto kroki, które wykonałem, aby uruchomić to w systemie Windows 10:

  1. Pobierz pakiet modułu PowerShell Security systemu plików - powinien być dostępny jako zwykły plik ZIP.
  2. Wyodrębnij plik Zip jako folder NTFSSecurity w katalogu C: \ WINDOWS \ system32 \ WindowsPowerShell \ v1.0 \ Modules.
  3. Otwórz konsolę PowerShell z uprawnieniami administratora (aka Tryb administratora) i uruchom Get-Module -ListAvailable i upewnij się, że NTFSSecurity pojawi się gdzieś na liście zarejestrowanych modułów.
  4. Uruchom Set-ExecutionPolicy bez ograniczeń, aby ominąć podpisany tryb wykonywania. Musisz potwierdzić tę akcję za pomocą Y (es)
  5. W końcu przejdź do folderu, który chcesz usunąć.
  6. W konsoli Powershell uruchom Import-Module NTFSSecurity .
  7. W konsoli PowerShell uruchom polecenie Remove-Item2 „YYYY” -Recurse , gdzie YYYY to względna lub bezwzględna ścieżka systemu Windows do folderu, który chcesz rekurencyjnie usunąć (np. C: \ Potatoes \ Badgers \ FolderToDelete ).
  8. Sprawdź, czy zadziałało.
  9. Ostatecznie powróć do trybu wykonywania z podpisem z ograniczeniem Set-ExecutionPolicy . Musisz potwierdzić tę akcję za pomocą Y (es).

0

Jeśli masz Bash na Ubuntu w systemie Windows, możesz cd do katalogu nadrzędnego w zwykłym wierszu polecenia, a następnie wpisać:

bash -c "rm -rf dirname_here"

Uruchamia bash, rekurencyjnie usuwa katalog z systemu Linux, w którym nie ma żadnych ograniczeń dotyczących nazw plików, a następnie wraca do zwykłego wiersza poleceń.


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.