Pokud ze složky odmažu staré soubory (např. pomocí forfiles
) získám 😉 strom složek, z nichž některé jsou (možná) prázdné. Vyzkoušel jsem jeden způsob, jak se jich zbavit.
Nejprve tedy odmazání souborů starších 28 dnů (to jen pro pořádek a úplnost):
forfiles /p "cesta_k_hlavnímu_adresáři" /m *.* /s /d -28 /c "cmd /c del /f /q @path" |
A teď smazání prázdných složek:
$destination = "cesta_k_hlavnímu_adresáři" $loop_control_total = 0 do{ $loop_control = 0 $items = Get-ChildItem $destination -Recurse foreach( $item in $items ){ if( $item.PSIsContainer ){ $subitems = Get-ChildItem -Recurse -Path $item.FullName if( $subitems -eq $null ){ "Remove item: " + $item.FullName Remove-Item $item.FullName -Recurse -Force $loop_control++ } $subitems = $null } } $loop_control_total++ }until( $loop_control -eq 0 -or $loop_control_total -ge 10 ) |
$loop_control
– pokud se něco smazalo, spustí se cyklus znovu (to je proto, aby se odmazala nadřazená složka, která možná zůstala prázdná)$loop_control_total
– celý cyklus proběhne max. třeba 10x (toto omezení je nutné, protože pokud by se nějakou složku nedařilo smazat (práva, dlouhá cesta, …) a vyhodnocovala by se stále jako prázdná, skript by uvízl v nekonečné smyčce)