2017-02-14 32 views
0

質問が明確になり、削除できないため、質問は書き換えられます。PowerShell:サブフォルダにファイルが存在しないフォルダを検索する

私は、7番号コードに基づいてフォルダツリーを作成するスクリプトを持っています。 YYYYYxxは(アップ持っているかもしれません

  1. たちの数は(私は正しい用語を知らないとして、層それを呼び出すため申し訳ありません)、その後、私のフォルダ階層が(数がフォルダの「層」を示している)ようなものになるだろうYYYYYYYであると仮定します別のプロジェクトのための100個のフォルダ)
  2. YYYYYYY(それは常に単一のプロジェクトで構成され、この層内のすべてのフォルダが深い同じstructerを持っている)
  3. サブフォルダA
  4. にこの「層」は、2つのフォルダ
  5. この「層を有し、 "プロジェクトファイルを持っています

「レイヤー」1〜3にはファイルがありません。ファイルはレイヤー5にしかないかもしれません。今は、どのプロジェクト(2レイヤー)にファイルがなく、空のフォルダーしかないのかを示すスクリプトを作成する必要があります。

答えて

2

PowerShell 3以降には、Get-Child-Itemの-Directoryパラメータと-Fileパラメータがあります。

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

パイプライン処理は、構造全体を列挙することなく1つのファイルが存在する場合に処理を停止するために使用されます。

0

"空のフォルダ"がサブディレクトリなしのフォルダであるか、ファイルのないフォルダのみであるかわからないので、フォルダ内のサブフォルダも考慮した別のクエリ可能性があります。ディレクトリ内のファイルのための

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

GetFilesチェックを、およびサブディレクトリのためのGetDirectoriesチェック: これは、すべての空のディレクトリを返す必要があります。

+0

いつも同じ量のフォルダがあるので、それは私のために好都合です。しかし、レイヤ2のサブディレクトリにファイルがあるかどうかを知る必要があります。私の例のYYYYYYY – atilas1

関連する問題