Jak usunąć puste foldery za pomocą programu PowerShell



Już to przerabiałem – czyszczenie mnóstwa pustych folderów po przeniesieniu lub oczyszczeniu dużego pliku. Ręczne robienie tego bywa dość irytujące, zwłaszcza gdy masz milion zagnieżdżonych katalogów. Właśnie tutaj PowerShell może ułatwić Ci życie, jeśli tylko zechcesz trochę pokombinować. Możesz stworzyć prosty skrypt, który skanuje folder (i jego podfoldery) i usuwa wszystkie puste foldery. Oczywiście, jeśli w Twojej konfiguracji są katalogi, które wyglądają na puste, ale są w rzeczywistości potrzebne, warto to sprawdzić przed naciśnięciem przycisku Delete. Ale jeśli chodzi o szybkie czyszczenie, to naprawdę oszczędza czas.

Jak usunąć puste foldery za pomocą programu PowerShell

Metoda 1: Korzystanie z funkcji programu PowerShell

Pomaga to, ponieważ PowerShell nie ma bezpośredniego polecenia takiego jak „delete-empty-folders”, ale można napisać małą niestandardową funkcję, która wyszukuje wszystkie puste foldery i usuwa je. Jest to szczególnie przydatne, jeśli masz duże drzewo katalogów i chcesz po prostu pozbyć się bałaganu za jednym razem. Po uruchomieniu tej funkcji spodziewaj się szybkiego przeszukania struktury folderów i usunięcia wszystkiego, co jest puste – mniej więcej jak w przypadku polecenia „spring clean”.Uprzedzam jednak, że czasami PowerShell może pominąć folder, jeśli jest zablokowany lub ma problemy z uprawnieniami, więc bądź czujny, jeśli nie usunie wszystkiego za pierwszym razem.

Oto jak wygląda skrypt. Zapisz go w oknie programu PowerShell i wywołaj funkcję, podając ścieżkę do folderu.

 function Remove-EmptyFolders([string]$folders){ Get-ChildItem $folders -Recurse | Where-Object {$_. PSIsContainer -and !(Get-ChildItem $_. FullName -Recurse | Where-Object {!$_. PSIsContainer})} | Remove-Item -Force -Recurse -ErrorAction SilentlyContinue } 

Ta mała funkcja zasadniczo przeszukuje każdy folder w podanej ścieżce, a następnie sprawdza, czy jest pusty (bez plików i podfolderów).Jeśli tak, usuwa go. Flaga -Force pomaga pozbyć się folderów tylko do odczytu, a -ErrorAction SilentlyContinue zapobiega zawieszaniu się programu PowerShell w przypadku błędów.

Jeśli chcesz z niego skorzystać, po prostu podaj ścieżkę do folderu w następujący sposób:

Remove-EmptyFolders 'C:\TempTest'

Lub, jeśli wolisz, zapisz ścieżkę jako zmienną i wywołaj funkcję:

$folderPath = 'C:\YourFolder' Remove-EmptyFolders $folderPath

Tak, obsługuje również zagnieżdżone podfoldery, co jest całkiem przydatne do czyszczenia dużych drzew folderów bez ręcznego klikania. Uważaj jednak, bo czasami foldery mogą wyglądać na puste, choć tak nie jest, zwłaszcza jeśli zawierają ukryte pliki lub uprawnienia są niestabilne.

Metoda 2: Korzystanie ze skryptu wsadowego lub narzędzi innych firm

Jeśli PowerShell wydaje Ci się nieco przesadny lub wolisz narzędzia graficzne, dostępne są darmowe programy, takie jak FileVoyager lub Empty Folder Nuker, które robią to wizualnie — ale skrypty dają Ci większą kontrolę i nie wymagają dodatkowych instalacji. Co więcej, po uzyskaniu skryptu możesz go powiązać z procedurami czyszczenia.

Nie wiem, dlaczego to działa, ale w niektórych konfiguracjach mogą wystąpić problemy z uprawnieniami lub foldery, których nie da się usunąć. W takich przypadkach pomocne jest uruchomienie programu PowerShell jako administrator lub sprawdzenie, czy jakieś pliki w nim nie są zablokowane przez jakiś proces.

Jeśli to nie pomoże, oto co może pomóc: upewnij się, że skrypt ma uprawnienia do usuwania wszystkich folderów docelowych lub spróbuj uruchomić program PowerShell z podwyższonymi uprawnieniami.

Dodanie krótkiej wskazówki: warto najpierw przetestować działanie skryptu na małej próbce — usuń kilka folderów testowych, aby mieć pewność, że skrypt zachowuje się zgodnie z oczekiwaniami przed większym uruchomieniem.

Streszczenie

  • Użyj prostej funkcji programu PowerShell, aby rekurencyjnie znaleźć i usunąć wszystkie puste foldery
  • W przypadku problemów z uprawnieniami należy uruchomić program PowerShell jako administrator
  • Przetestuj swój skrypt na folderze fikcyjnym przed masowym czyszczeniem
  • Pamiętaj, że nie jest to rozwiązanie idealne — przed usunięciem sprawdź dokładnie foldery, aby uniknąć utraty ważnych danych

Podsumowanie

Automatyczne czyszczenie pustych katalogów może zaoszczędzić mnóstwo czasu, zwłaszcza jeśli dbasz o porządek w systemie i folderach. Skrypt nie jest całkowicie niezawodny, ale to niezły sposób na automatyzację nudnego zadania. Czasami PowerShell bywa nieco drażliwy w zależności od uprawnień lub atrybutów folderów, ale ogólnie rzecz biorąc, jest całkiem niezawodny, gdy się do niego przyzwyczaisz. Tylko zachowaj ostrożność i nie uruchamiaj go bezmyślnie w ważnych folderach bez szybkiego sprawdzenia — oczywiście system Windows musi to utrudniać bardziej niż to konieczne.

Mam nadzieję, że to skróci komuś czas pracy. Powodzenia w porządkowaniu pustych folderów!



Czy ten artykuł był pomocny?