特定のフォルダー内のすべてのフォルダーとサブフォルダー(再帰的、ファイルなし)をカウントするPowerShell 2.0コマンド/スクリプト(C:\ folder1 \ folder2内のすべてのサブフォルダーの数など)を知っている人はいますか?
さらに、すべての「リーフ」フォルダの数も必要です。つまり、サブオールダーを持たないフォルダーのみをカウントしたいのです。
特定のフォルダー内のすべてのフォルダーとサブフォルダー(再帰的、ファイルなし)をカウントするPowerShell 2.0コマンド/スクリプト(C:\ folder1 \ folder2内のすべてのサブフォルダーの数など)を知っている人はいますか?
さらに、すべての「リーフ」フォルダの数も必要です。つまり、サブオールダーを持たないフォルダーのみをカウントしたいのです。
PowerShell 3.0 では、Directory スイッチを使用できます。
(Get-ChildItem -Path <path> -Directory -Recurse -Force).Count
を使用get-childitem -recurse
して、現在のフォルダー内のすべてのファイルとフォルダーを取得できます。
それをパイプしてWhere-Object
、コンテナであるファイルのみにフィルタリングします。
$files = get-childitem -Path c:\temp -recurse
$folders = $files | where-object { $_.PSIsContainer }
Write-Host $folders.Count
ワンライナーとして:
(get-childitem -Path c:\temp -recurse | where-object { $_.PSIsContainer }).Count
別のオプション:
(ls -force -rec | measure -inp {$_.psiscontainer} -Sum).sum
これは非常に良い出発点です。
(gci -force -recurse | where-object { $_.PSIsContainer }).Count
.zip
ただし、これにはファイルがカウントに含まれると思われます。私はそれをテストし、更新を投稿しようとします...
編集: zip ファイルがコンテナーとしてカウントされないことを確認しました。上記で大丈夫なはずです!
質問の 2 番目の部分であるリーフ フォルダー カウントの取得に答えるには、where オブジェクト句を変更して各ディレクトリの非再帰検索を追加し、カウント 0 を返すものだけを取得します。
(dir -rec | where-object{$_.PSIsContainer -and ((dir $_.fullname | where-object{$_.PSIsContainer}).count -eq 0)}).Count
powershell 3.0 を使用できる場合は、少しきれいに見えます。
(dir -rec -directory | where-object{(dir $_.fullname -directory).count -eq 0}).count