112

特定のフォルダー ( ) 内の項目 (ファイルとフォルダーの両方) の総数を取得するための非常に単純な PowerShell スクリプトを作成しようとしていますc:\MyFolder。これが私がやったことです:

Write-Host ( Get-ChildItem c:\MyFolder ).Count;

問題は、アイテムが 1 つまたは 0 の場合、コマンドが機能しないことです。何も返されません。

何か案は?

4

8 に答える 8

182

Measure-Objectものを数えるのに使うべきです。この場合、次のようになります。

Write-Host ( Get-ChildItem c:\MyFolder | Measure-Object ).Count;

またはそれが長すぎる場合

Write-Host ( dir c:\MyFolder | mo).Count;

PowerShell 4.0 では、measure代わりにエイリアスを使用します。mo

Write-Host (dir c:\MyFolder | measure).Count;
于 2013-02-05T20:46:39.277 に答える
42

私はついにこのリンクを見つけました:

https://blogs.perficient.com/microsoft/2011/06/powershell-count-property-returns-nothing/

これは、ディレクトリ内にファイルが 1 つしかないために発生した異常であることが判明しました。いくつかの検索により、この場合、PowerShell は配列ではなくスカラー オブジェクトを返すことが明らかになりました。このオブジェクトには count プロパティがないため、取得するものはありません。

解決策 -- PowerShell が次の@記号を含む配列を返すように強制します。

Write-Host @( Get-ChildItem c:\MyFolder ).Count;
于 2013-02-05T18:40:04.863 に答える
40

プロセスを高速化する必要がある場合 (たとえば、30k 以上のファイルをカウントする場合)、次のようなものを使用します..

$filepath = "c:\MyFolder"
$filetype = "*.txt"
$file_count = [System.IO.Directory]::GetFiles("$filepath", "$filetype").Count
于 2014-11-13T05:48:22.800 に答える
17

ファイルのみ

Get-ChildItem D:\ -Recurse -File | Measure-Object | %{$_.Count}

フォルダのみ

Get-ChildItem D:\ -Recurse -Directory | Measure-Object | %{$_.Count}

両方

Get-ChildItem D:\ -Recurse | Measure-Object | %{$_.Count}
于 2015-08-13T12:22:02.383 に答える