Powershell-Befehl zum löschen von Unterordnern löschen, ohne root
Ich Probleme mit dem erstellen einer PS-Befehl, der mir erlaubt zu löschen mehrerer Unterordner löschen, ohne die Dach-Ordner.
I. E:
C:\Test hat viele Unterordner:
- C:\Test\Item1
- C:\Test\Item2
- C:\Test\Item3
Und die Ordner Item1, Item2 und Item3 haben viele Unterordner und Dateien.
Ich würde gern ein PS, das mir erlauben würde, um zu löschen Sie alle leeren Unterordner innerhalb Item1, Item2 und Item3 löschen, ohne Item1, Item2 und Item3 Ordner. Es ist möglich, dass alle von der Item Ordner ist leer, aber ich will nicht, Sie zu löschen, nur leeren Inhalt der jeweiligen Ordner.
Dies ist nur ein Beispiel, ich habe eine rund 300 Item-Ordner in Test.
Ich in der Regel verwenden würde:
$Pfad="C:\TEST"
do {
$dir = gci $path -directory -recurse | Where { (gci $_.fullName).count -eq 0 } | select -expandproperty FullName
$dir | Foreach-Object { Remove-Item $_ }
} while ($dir.count -gt 0)
Aber dies löscht die Ordner root-Ordner (Item1, Item2 oder Item3), wenn Sie leer sind.
Vielen Dank im Voraus.
InformationsquelleAutor CrazyCow89 | 2017-02-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
So suchen Sie, löschen Sie Alle Objekte, die sich in Leeren Unterordner oder alle Elemente, die im Allgemeinen?
Dies löscht alle Ordner oder Elemente im Allgemeinen im Verzeichnis "C:\abc\"
Dies löscht alle Ordner, die nicht alle Elemente in Ihnen.
Diese wird von innen sehen "C:\abc\" Erhalten alle Kinder und löschen Sie alle leeren Verzeichnisse in der die Kinder in deinem Beispiel wäre dies Item1,Item2,...
Nur ein quick-and-dirty bit-Code, da habe ich nicht viel Zeit, hoffe ich konnte helfen.
EDIT: Hier ist was ich kam mit, es ist nicht so performant wie ich möchte, aber es bekommt den job getan und ist ziemlich schnell, versuchen Sie es selbst, es war für mich - selbst warf in ein paar der Kommentare-und Ausgang, um zu klären, was Los ist.
Eine andere Sache, die ich verwenden könnte, ist zu löschen, jede Datei und jeder Ordner in den Item1.. ItemZ Ordner, wenn Sie älter sind als X Höhe der Zeit. Könnte das die Dinge einfacher? Was ich nicht will ist das löschen der ItemX Ordner.
Fule Kleines update hier: ich habe es geschafft ALLE Dateien zu löschen, aber wenn ich versuche, löschen Sie nur diejenigen, die älter als X Anzahl der Tage, es funktioniert nicht:
$Path = "C:\Test\"
$itemFolders= Get-ChildItem -Path $Path
$limit = (Get-Date).AddDays(-30)
$itemFolders| Foreach-Object {
Get-ChildItem -Path $_.FullName |
Where-Object {((Get-ChildItem $_.FullName).Count -ge 0) -or ($_.CreationTime -lt $limit)} |
Foreach-object {Remove-item -Recurse -Force -path $_.FullName} }
nur bearbeitet meine Antwort hoffe das hilft
Es arbeitet völlig in Ordnung! Ich danke Ihnen sehr!
InformationsquelleAutor Fabian Fulde