In questa pagina

Come rimuovere le cartelle vuote con PowerShell



Ci sono già passato, l’ho fatto: ripulire tonnellate di cartelle vuote dopo uno spostamento o una pulizia di file di grandi dimensioni. Diventa un po’ fastidioso farlo manualmente, soprattutto quando si hanno un milione di directory nidificate.È qui che PowerShell può effettivamente semplificare la vita, se si è disposti a sperimentare un po’.Si può creare un semplice script che analizza una cartella (e le sue sottocartelle) ed elimina tutte le cartelle vuote. Naturalmente, se la configurazione presenta alcune directory che sembrano vuote ma in realtà sono necessarie, è consigliabile ricontrollare prima di premere Elimina. Ma per una pulizia rapida, è un vero risparmio di tempo.

Come eliminare le cartelle vuote con PowerShell

Metodo 1: utilizzo di una funzione PowerShell

Il motivo per cui è utile è che PowerShell non ha un comando diretto come “delete-empty-folders”, ma è possibile scrivere una piccola funzione personalizzata che trovi tutte quelle vuote e le pulisca. Questo è particolarmente utile se si ha un albero di directory di grandi dimensioni e si desidera semplicemente eliminare il disordine in una sola volta. Quando si esegue questa funzione, aspettatevi che analizzi rapidamente la struttura delle cartelle ed elimini tutto ciò che è vuoto, un po’ come fare “pulizie di primavera” con un comando. Attenzione però: a volte PowerShell può non rilevare una cartella se è bloccata o presenta problemi di permessi, quindi fate attenzione se non elimina tutto al primo tentativo.

Ecco come appare lo script. Salvalo nella finestra di PowerShell e chiama semplicemente la funzione con un percorso di cartella.

 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 } 

Questa piccola funzione esamina in pratica ogni cartella nel percorso specificato, quindi controlla se è vuota (nessun file o sottocartella).In caso affermativo, la elimina. Il flag -Force aiuta a eliminare le cartelle di sola lettura, mentre -ErrorAction SilentlyContinue impedisce a PowerShell di andare in tilt a causa degli errori.

Se vuoi utilizzarlo, ti basta fornire il percorso della cartella in questo modo:

Remove-EmptyFolders 'C:\TempTest'

Oppure, se preferisci, salva il percorso come variabile e chiama la funzione:

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

E sì, può gestire anche le sottocartelle nidificate, il che è ottimo per ripulire enormi alberi di cartelle senza dover cliccare manualmente. Fate attenzione perché a volte le cartelle possono sembrare vuote quando non lo sono, soprattutto se sono presenti file nascosti o i permessi sono instabili.

Metodo 2: utilizzo di uno script batch o di strumenti di terze parti

Se PowerShell ti sembra un po’ eccessivo o preferisci strumenti con interfaccia grafica, esistono programmi gratuiti come FileVoyager o Empty Folder Nuker che lo fanno visivamente, ma gli script offrono un maggiore controllo e non richiedono installazioni aggiuntive. Inoltre, una volta ottenuto lo script, puoi integrarlo nelle tue routine di pulizia.

Non so perché funzioni, ma in alcune configurazioni potresti riscontrare problemi di autorizzazioni o cartelle che non riescono a essere eliminate. In questi casi, eseguire PowerShell come amministratore può essere utile o verificare se i file al suo interno sono bloccati da qualche processo.

Se questo non dovesse funzionare, ecco cosa potrebbe fare: assicurati che lo script abbia l’autorizzazione per eliminare tutte le cartelle di destinazione oppure prova a eseguire PowerShell con diritti elevati.

Un piccolo suggerimento: è consigliabile testare prima su un piccolo campione, eliminando alcune cartelle di test solo per assicurarsi che lo script si comporti come previsto prima di una grande esecuzione.

  • Utilizzare una semplice funzione di PowerShell per trovare ed eliminare ricorsivamente tutte le cartelle vuote
  • Assicurati di eseguire PowerShell come amministratore se riscontri problemi di autorizzazioni
  • Prova il tuo script su una cartella fittizia prima della pulizia di massa
  • Ricorda, non è perfetto: ricontrolla le cartelle prima di eliminarle per evitare di perdere qualcosa di importante

Incartare

Svuotare automaticamente le directory vuote può far risparmiare un sacco di tempo, soprattutto se si mantiene il sistema e le cartelle in ordine. Lo script non è del tutto infallibile, ma è un buon modo per automatizzare un compito altrimenti noioso. A volte PowerShell può risultare un po’ complicato a seconda dei permessi o degli attributi delle cartelle, ma nel complesso è piuttosto affidabile una volta che ci si abitua. Siate cauti e non eseguitelo alla cieca su cartelle importanti senza un rapido controllo: ovviamente, Windows deve renderlo più difficile del necessario.

Spero che questo faccia risparmiare qualche ora a qualcuno. In bocca al lupo per svuotare quelle cartelle vuote!



Questo articolo è stato utile?