PowerShellでフォルダー内のアイテムをカウントする


91

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

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

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

何か案は?

回答:


148

あなたは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;

特定のフォルダ内のすべてのフォルダの数を取得するにはどうすればよいですか?
Mihir 2018年

37

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

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

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

解決策-PowerShellに@シンボルを含む配列を強制的に返します。

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

5
パーフェクト、ありがとう。コマンドレットが「役立つ」ようにして、戻り値の型を変更しようとすると、迷惑になります。
Paul Suart 2014

34

プロセスを高速化する必要がある場合(たとえば、30k以上のファイルを数える)、私はこのようなものを使います。

$filepath = "c:\MyFolder"
$filetype = "*.txt"
$file_count = [System.IO.Directory]::GetFiles("$filepath", "$filetype").Count

それは桁違いに速いです!ありがとう。29Kを超えるファイルを含むフォルダーがあり、このメソッドは、RETURNキーから指を離したときと同じ速さでカウントを返しました。
xizdaqrian

1
これは、こちら[System.IO.Directory]::GetFiles("$filepath", "$filetype",1)参照してください
コーディG

14

ファイルのみ

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

フォルダのみ

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

両方とも

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

2
最初のものでは、すべてのjpgおよびpngファイルをどのように検索しますか?
Al Lelopath 2016年

4
@AlLelopathGet-ChildItem D:\ -Recurse -File -Include *.jpg,*.png | Measure-Object | %{$_.Count}
dhcgn



1

powershellでは、このコマンドの数字を探すために、いくつかのコマンドを使用できますGet-Alias

したがって、使用できるcammandsは次のとおりです。

write-host (ls MydirectoryName).Count

または

write-host (dir MydirectoryName).Count

または

write-host (Get-ChildrenItem MydirectoryName).Count

0

フォルダ内の特定のファイルタイプの数を数える。例では、F:ドライブ上のmp3ファイルをカウントします。

( Get-ChildItme F: -Filter *.mp3 - Recurse | measure ).Count

6.2.3でテスト済みですが、動作するはずです> 4。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.