Mam pudełko z systemem Windows XP z dyskiem NTFS i usuwanie dużych ilości plików jest bardzo wolne. Jeśli wybiorę folder zawierający dużą liczbę plików w drzewie folderów i usunę go (używając shift-del do zapisania kosza), zajmie to trochę czasu, który wydaje się być wprost proporcjonalny do liczby plików w folderze, zanim jeszcze wyskakuje okno potwierdzenia. Usunięcie każdego pliku w folderze zajmuje jeszcze więcej czasu.
Czy istnieje sposób na usunięcie folderu w systemie Windows, a czas nie jest proporcjonalny do liczby plików w nim zawartych?
Odpowiedzi:
Nie sądzę, ale niektóre metody są wyraźnie szybsze niż inne.
Najgorszym sposobem jest wysłanie do Kosza: nadal musisz je usunąć. Kolejne najgorsze to shift + delete w Eksploratorze Windows: marnuje mnóstwo czasu na sprawdzanie zawartości przed rozpoczęciem usuwania czegokolwiek.
Następnym najlepszym rozwiązaniem jest użycie
rmdir /s/q foldername
z wiersza poleceń.del /f/s/q foldername
jest również dobry, ale pozostawia strukturę katalogów.Najlepsze, co znalazłem, to dwuwierszowy plik wsadowy z pierwszym przejściem do usuwania plików i wysyłania do nul, aby uniknąć narzutu pisania na ekranie dla każdego pojedynczego pliku. Drugie przejście następnie usuwa pozostałą strukturę katalogów:
Jest to prawie trzy razy szybsze niż pojedynczy plik rmdir, na podstawie testów czasowych z zaszyfrowanym dyskiem systemu Windows XP, usuwanie ~ 30 GB / 1 000 000 plików / 15 000 folderów:
rmdir
zajmuje ~ 2,5 godziny,del+rmdir
zajmuje ~ 53 minut. Więcej informacji tutaj .Jest to dla mnie normalne zadanie, więc zwykle przenoszę rzeczy, które muszę usunąć, do C: \ stufftodelete i mam te
del+rmdir
polecenia w pliku wsadowym deletestuff.bat. To ma działać w nocy, ale czasami muszę go uruchomić w ciągu dnia, więc im szybciej, tym lepiej.źródło
> nul
Tak, sformatuj partycję. Jestem trochę zaskoczony, że nikt nie sugerował tego w ciągu ostatnich 9 lat.
Jest to dość radykalne, ale jeśli spodziewasz się, że będziesz to robić często dla określonego folderu, może być warto utworzyć dla niego osobną partycję.
Jeśli to zbyt radykalne, pozostałe odpowiedzi są twoją jedyną nadzieją. Istnieje dobre wytłumaczenie przyczyny błędu serwera . Dotyczy to systemów plików Linux i XFS, ale tutaj obowiązuje ta sama logika. Nie można wiele poprawić we wbudowanych funkcjach systemu operacyjnego.
Jeśli jednak znasz ścieżki do wszystkich plików, które chcesz usunąć, możesz zapisywać na połączeniach, które zawierają zawartość katalogu i usuwać połączenia bezpośrednio, oszczędzając trochę narzutu. Nadal jednak proporcjonalny do liczby plików.
Osobiście lubię niektóre z raportów z postępu, aby upewnić się, że program nie umrze. Więc lubię usuwać rzeczy przez python. Na przykład, jeśli wszystkie pliki znajdują się w jednym katalogu bez podkatalogów:
Spowoduje to usunięcie około 250 plików / s na moim 12-letnim SEAGATE ST3250620NS. Zakładam, że na twoim dysku będzie znacznie szybciej.
Jednak w tym momencie jest to tylko mikrooptymalizacja, więc nie zrobi wiele, jeśli nie będziesz mieć milionów plików w jednym katalogu. (jak ja, lol, co ja zrobiłem D :)
źródło
Zainstaluj
gnutools for windows
i uruchom:źródło
Upewnij się, że nie tworzysz kopii zapasowej plików w chmurze i nie próbujesz ich jednocześnie usunąć!
W przypadku wielu rozwiązań do tworzenia kopii zapasowych w chmurze pliki zostaną zablokowane podczas tworzenia kopii zapasowej, a następnie musisz poczekać na ich utworzenie.
Jeśli masz ten problem, powiedzmy, że katalog tymczasowy (lub coś, co nie wymaga tworzenia kopii zapasowej), upewnij się, że katalog tymczasowy nie jest wybrany w zestawie kopii zapasowych.
źródło
Odkryłem, że foldery z kilkoma warstwami katalogów naprawdę spowalniają zdolność Windows do szybkiego ich usuwania. Pracowałem nad projektem, w którym dotarcie do folderu node_modules zajęło 5 poziomów, które zawsze można usunąć, nawet jeśli
W tej sytuacji przechodzę do folderu node_modules lub innego katalogu o najgłębszych poziomach i po prostu zaczynam wybierać i usuwać kilkanaście katalogów naraz. Jeśli pojawia się wiele operacji usuwania, wymusza to pracę Kosza w równoległych procesach, a nie w pojedynczym wątku, który, jak sądzę, używa, znacznie przyspiesza proces.
Gdy mój najgłębszy katalog jest pusty, idę o kilka poziomów wyżej i robię to samo. To zmniejszyło liczbę usunięć, które zajęły mi ponad godzinę do zaledwie kilku minut.
Jest to bardzo ręczny proces i prawdopodobnie można go napisać z pewnym sukcesem, ale to zadziałało dla mnie
źródło
Użyłem oryginalnej odpowiedzi Hugo, aby utworzyć plik .bat, którego używam podczas usuwania projektów NPM. Dodałem zmienną ścieżki i muszę tylko skopiować i wkleić ścieżkę. Kliknij dwukrotnie plik .bat i wykona całą pracę - nie musisz wpisywać wszystkiego.
Przykładowe użycie:
źródło
próbowałeś użyć wiersza polecenia
rmdir /s /q foldername
wszystkie operacje na dużych plikach w GUI są powolne - głównie dlatego, że wizualne sprzężenie zwrotne (pasek postępu) musi być wielokrotnie odświeżane
źródło