Boş klasörleri silin – Windows PowerShell ile kolayca

Womanne

Member
Bir dosya sistemi yolundaki boş dizinleri yinelemeli olarak aramak ve silmek için bir PowerShell betiği kullanabilirsiniz.


Dosya sisteminde, ya yanlışlıkla oluşturuldukları ya da artık herhangi bir içerikleri olmadığı için her zaman boş dizinler vardır. Windows Gezgini, boş klasörleri aramak için yerleşik bir özelliğe sahip değildir. Bunun için Jones John’un “Boş Dizinleri Kaldır” gibi özel araçları vardır. Ancak bu görev için herhangi bir özel yazılım yüklemek istemiyorsanız aşağıdaki PowerShell betiğini kullanabilirsiniz. Belirtilen yoldaki tüm boş dosya sistemi klasörlerini kaldırır. Yol yinelemeli olarak aranır. parametre -Güç orada Get-Cilditem (takma ad: sana) gizli dosya ve klasörlerin bile tanınması ve yalnızca gizli öğeler içeriyorsa klasörlerin silinmemesi için kullanılır.

###########################################
# Löschen leerer Dateisystemordner in einem Pfad (rekursiv)
# (C) Dr. Holger Schwichtenberg, www.IT-Visions.de
###########################################

# veri girişi
$root = “t:proje arşivi”
$logfile = “c:tempBoş LOG.txt klasörlerini sil”
[int] $NumberofFoldersDeleted= 0

Remove-EmptyFolder($yol) işlevi
{
$list = dir -literalpath $yol -Dosya -Kuvvet
$dosya = $list.count
$alt dizinler = dir -literalpath $yol -Directory -Force

foreach($alt dizinlerde $alt dizin)
{
$file = $file + (Remove-EmptyFolder$subdir.fullname)
}
Yazma-ayrıntılı “$yol : $dosya”
eğer ($dosya -eq0)
{
write-host “==> Boş klasörü sil: $yol”
rd -literalpath$path -yineleme kuvveti
$script:NumberDeletedFolders++
Add-Content-Path $logfile-value $path
}

$dosyasını döndür
}

## Ana program
Write-Host “$root yolundaki boş klasörü arayın”
$subdirs = dir $root -Directory -Force

foreach($subdir in $subdirs)
{
Remove-EmptyFolder $subdir.fullname | out-null
}
Write-Host "$AnzGelöschteOrdner Ordner gelöscht!"

Silinen yollar bir günlük dosyasına kaydedilir. Bu, gerekirse dosya sistemi klasörlerini yeniden oluşturmak için daha sonra kullanılabilir. Aşağıdaki espri yeterli olacaktır.

Get-Content "t:Leere Ordner löschen.txt" | where { $_ -ne $null } | foreach { md $_ -ErrorAction SilentlyContinue }

parametre -ErrorAction açık olacak sessizce devam et ayarlayın, aksi takdirde, bir alt klasör oluşturulduğunda otomatik olarak oluşturulduğu için zaten bir üst düzey klasör varsa hata mesajları görüntülenecektir.


()



Haberin Sonu
 
Üst