2017-02-14 3 views
0

Frage erneut schreiben, wegen der Klarheitsprobleme und nicht in der Lage, es zu löschen.PowerShell: Suchen von Ordnern ohne Datei in Unterordnern

Ich habe Skript, das Ordner Baum basierend auf 7-Nummer-Code erstellt. Nehmen wir an, unsere Nummer ist YYYYYYY dann würde meine Ordner-Hierarchie so etwas wie (Anzahl „Schicht“ des Ordners zeigt) (sorry dafür Schichten nennen, wie ich weiß nicht, die richtige Terminologie)

  1. YYYYYxx (wahrscheinlich bis 100 Ordner für verschiedene Projekte)
  2. YYYYYYY (jeder Ordner in dieser Schicht tiefe gleichen structer wie es von einzelnem Projekt besteht immer)
  3. Subfolder A
  4. Diese „Schicht“ hat zwei Ordner
  5. Diese „Schicht "hat Projektdateien

"Ebenen" 1-3, hat keine Dateien jemals. Dateien können nur in Schicht 5 sein. Jetzt muss ich Skript machen, das in welchen Projekten (2 Ebenen) keine Dateien, nur leere Ordner anzeigen würde.

Antwort

2

PowerShell 3+ hat -Directory- und -File-Parameter von Get-Child-Item.

$L1withEmptyL2subfolder = dir $startFolder\*\* -Directory | 
    Where { !(dir $_ -Recurse -File | select -first 1) } 

Mit dem Pipelining wird die Verarbeitung gestoppt, wenn nur eine Datei existiert, ohne die gesamte Struktur aufzuzählen.

0

Da ich nicht sicher bin, ob "leere Ordner" Ordner ohne Unterverzeichnisse oder nur Ordner ohne Dateien sind, habe ich eine weitere Abfrage Möglichkeit, die auch Unterordner in Ordnern betrifft. Dies sollte alle leeren Verzeichnisse zurück:

dir \*\* | ? { $_.PsisContainer } | ? {$_.GetFiles().Count -eq 0 -and $_.GetDirectories().Count -eq 0} 

GetFiles prüft, ob Dateien in dem Verzeichnis, und GetDirectories prüft Verzeichnisse.

+0

Es gibt immer die gleiche Menge an Ordnern, also ist es irrelevant für mich. Allerdings muss ich wissen, ob es irgendeine Datei in einem Unterverzeichnis von Layer 2 gibt. YYYYYYY meines Beispiels – atilas1

Verwandte Themen