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-Item
w 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?
źródło
Ubuntu
lub dowolnego innegoLinux Bootable CD
możemyUbuntu
tymczasowo uruchomić komputer lub inny system operacyjny. następnie możemy wybrać folder i łatwo go usunąć.Odpowiedzi:
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).
źródło
shift + Del
jak powiedział @cori. Jeśli wybierzeszDelete
opcję z menu kontekstowego, nie powiedzie się ona tam.shift + Del
to!Żadna z pozostałych (darmowych) odpowiedzi tutaj nie działała dla mnie, ale znalazłem jedną na innej stronie:
rimraf to pakiet Node.js , więc musisz zainstalować Node.js, który zawiera npm . Następnie możesz uruchomić:
Następnie możesz uruchomić
rimraf
z 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,
rimraf
otrzymuje swoją nazwę od polecenia UNIXrm -rf
, które rekurencyjnie usuwa pliki i foldery.źródło
Nie ma potrzeby instalowania żadnego programu do rozwiązania tego problemu.
Ten problem można łatwo rozwiązać za pomocą
robocopy
preinstalowanej 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
robocopy
aby skopiować + zaktualizowaćPo uruchomieniu
robocopy
katalog docelowy również byłby pusty.Te instrukcje dotyczą wiersza poleceń. Wystarczy otworzyć wyszukiwanie w systemie Windows, wpisać
cmd
i nacisnąć Enter.Powiedzmy, że celem usuwania jest:
Postępujemy następująco:
Najpierw utwórz pusty katalog, fi
C:\emptyfolder
.Skopiuj + aktualizuj z pustego katalogu do celu, korzystając z opcji
/purge
Usuń pusty katalog. Już go nie potrzebujesz.
Ponieważ w katalogu źródłowym (
C:\emptyfolder
) nie ma plików ani folderów , po prostuC:\delete\this folder\with a very long name
rekursywnie usuwa pliki i foldery w katalogu docelowym ( )!Ostatnia sztuczka: możesz uniknąć pisania ręcznie
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ł:
źródło
Myślę, że znalazłem sposób na usunięcie rzeczy
cmd
. Początkowo próbowałemdel
polecenia, ale to nie działało. Potem sobie przypomniałemrmdir
. Wykonując następujące czynności:wydaje się działać.
źródło
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 .
FastCopy jest przenośny (nie wymaga instalacji), dostępne są wersje 32-bitowe i 64-bitowe.
źródło
Bez instalowania dodatkowego oprogramowania można użyć
subst
polecenia, 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ć poleceniaa następnie możesz łatwo usunąć
X:\folder to be deleted
w Eksploratorze Windows lub w wierszu polecenia. Aby usunąć tymczasowy alias litery dysku, użyj poleceniaźródło
Cygwin
rm -rf
działa dobrze na długich ścieżkach!źródło
Po prostu upuść z Powershell do polecenia, uruchamiając poniżej:
źródło
Rozwiązanie Dentrasi jest dla mnie najlepsze, ale chciałem zamieścić konkretne kroki w odpowiedzi na najwyższym poziomie.
źródło
Istnieją dwie rzeczy, które nie zostały jeszcze wspomniane w istniejących odpowiedziach.
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
\\?\
: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.
regedit.exe
.HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy Objects\{48981759-12F2-42A6-A048-028B3973495F}Machine\System\CurrentControlSet\Policies
LongPathsEnabled
.LongPathsEnabled
się1
włą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:
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.
źródło
{48981759-12F2-42A6-A048-028B3973495F}Machine
część ścieżki rejestru będzie inna na każdym komputerze - może nie być oczywiste dla każdegoPodoba 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.
źródło
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 -rf
dla folderów)źródło
Git Bash Here
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 .
źródło
chkdsk
należy go rozwiązać.Możesz je również usunąć, używając ich równoważnej krótkiej nazwy.
dir /x
pokaże ci je.źródło
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
źródło
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:
źródło
Większe katalogi są również przeznaczone do tego zadania.
Więcej informacji na CodeProject .
źródło
Napotkałem ten problem w systemie Windows 10 i znalazłem to łatwe rozwiązanie.
źródło
Tutaj znajdziesz idealną odpowiedź (dla plików). Działa w systemie Windows 10.
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.
źródło
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:
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 .
Pobierz pakiet modułu PowerShell Security systemu plików - powinien być dostępny jako zwykły plik ZIP.
źródło
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:
źródło
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ć:
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ń.
źródło
Przejdź do katalogu w WinRAR, wybierz plik, naciśnij F2, zmień nazwę pliku na krótszą nazwę. Następnie możesz usunąć plik jak zwykle.
Źródło: https://www.youtube.com/watch?v=qQTyTprFAOg
źródło