druide83
Goto Top

Leere Verzeichnisse mit mehreren Unterordnern löschen?

Morgen zusammen,

wie im Titel schon beschrieben, möchte ich ein Verzeichnis nach leeren Verzeichnissen durchsuchen lassen und diese sollen dann gelöscht werden.

Ich habe aus dem Netz folgenden PS Code:

Function Remove-EmptyFolders() {
[CmdletBinding()]
Param(
[Parameter(Mandatory=$true,HelpMessage="Path including subfolders to analyze for empty folders")]
$Path
)

Function checkEmpty([String] $Path) {
if ((Get-ChildItem -Force -LiteralPath "$Path") -eq $null) {
return $true;
} else {
return $false;
}
}

if (checkEmpty "$Path") {
(Get-Item -Force -LiteralPath "$Path").Delete()
} else {
$Folders = Get-ChildItem -Force -LiteralPath "$Path"

foreach ($Folder in $Folders) {
Remove-EmptyFolders "$Path/$Folder"
}
}
}

Remove-EmptyFolders "Der Pfad der durchsucht werden soll"

Dieser funktioniert hervorragend, aber löscht leider keine leeren Unterverzeichnisse.
Der part

foreach ($Folder in $Folders) {
Remove-EmptyFolders "$Path/$Folder"
}

sollte dies doch eigentlich erledigen?

Würde mich sehr über Hilfe freuen.

Content-ID: 265302

Url: https://administrator.de/contentid/265302

Ausgedruckt am: 22.11.2024 um 17:11 Uhr

Lochkartenstanzer
Lochkartenstanzer 05.03.2015 aktualisiert um 10:11:00 Uhr
Goto Top
Moin,

falls Dir die Scriptsprache egal ist, gibt es eine elegante Lösung mit dem Unix-Utility find, daß es auch für Windows gibt:

find $pfad -depth -type d -empty  -exec rmdir -v {} \; 

lks
Druide83
Druide83 05.03.2015 um 10:12:26 Uhr
Goto Top
Danke für den Tip, sollte aber auch mit Powershell gehen, da das nur ein Part eines PS Skript ist.
colinardo
Lösung colinardo 05.03.2015 aktualisiert um 10:53:01 Uhr
Goto Top
Moin zusammen,
$folder = 'C:\temp'  
gci $folder -Recurse | ?{$_.PSIsContainer -and $_.GetDirectories().Count -eq 0 -and $_.GetFiles().Count -eq 0} | remove-item -Force -EA SilentlyContinue
Grüße Uwe
Druide83
Druide83 05.03.2015 um 10:52:51 Uhr
Goto Top
Vielen Dank colinardo, das funktioniert wunderbar.