8

特定のフォルダー内のすべてのフォルダーとサブフォルダー(再帰的、ファイルなし)をカウントするPowerShell 2.0コマンド/スクリプト(C:\ folder1 \ folder2内のすべてのサブフォルダーの数など)を知っている人はいますか?

さらに、すべての「リーフ」フォルダの数も必要です。つまり、サブオールダーを持たないフォルダーのみをカウントしたいのです。

4

6 に答える 6

14

PowerShell 3.0 では、Directory スイッチを使用できます。

(Get-ChildItem -Path <path> -Directory -Recurse -Force).Count
于 2012-10-17T12:39:31.153 に答える
10

を使用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
于 2012-10-17T12:21:37.830 に答える
3

別のオプション:

(ls -force -rec | measure -inp {$_.psiscontainer} -Sum).sum
于 2012-10-18T05:32:52.560 に答える
2

これは非常に良い出発点です。

(gci -force -recurse | where-object { $_.PSIsContainer }).Count

.zipただし、これにはファイルがカウントに含まれると思われます。私はそれをテストし、更新を投稿しようとします...

編集: zip ファイルがコンテナーとしてカウントされないことを確認しました。上記で大丈夫なはずです!

于 2012-10-17T12:21:26.513 に答える
2

質問の 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
于 2012-10-17T17:07:16.037 に答える