2017-07-31 7 views
0

私には2つのサブフォルダを持つたくさんのフォルダがあり、この2つのサブフォルダにはそれぞれサブフォルダが1つあります。私はすでにファイル名に基づいてこれらのフォルダに画像を並べ替えるスクリプトを書いており、各ディレクトリのリストとそこにいくつの項目があるかのカウントを生成できるコードスニペットを見つけました。問題は、サブフォルダをファイルとしてカウントしないで再帰的検索を行い、それでも検索することです。現時点では私が使用していたコードは以下の通りです:サブフォルダを数えずにファイルを再帰的にカウントする

#set-location "MyDirectory" 
dir -recurse | ?{ $_.PSIsContainer } | %{ Write-Host $_.FullName 
(dir $_.FullName | Measure-Object).Count } 

これは私のディレクトリと、次のようにリストを与え、カウント:

C:\...\Folder1 2 #These are the two subfolders that are listed 
C:\...\Folder1.1 18 #These are the files in the folder, the subfolder included 
C:\...\Folder1.2 47 #Subfolder included 
C:\...\Folder1.1.1 10 #Herein lies only files 
C:\...\Folder1.2.1 5 #Only files 

基本的に、私はFolder1.1のカウントをしたいですおよびFolder1.2には、フォルダではなく、ファイルではなく、フォルダ1.1.1とFolder1.2.1は含まれません。

これまでの私の努力では、ファイルの検索のみ、またはフォルダのみの検索が行われました。

+0

PowerShell3以降では、最初の 'dir'では' -Directory'パラメータを使い、2番目の 'dir'では' -File'を使うだけです。 – wOxxOm

+0

これは完全に機能しました。どうもありがとうございました! – Egil

答えて

0

あなたはとても接近している:

dir -recurse | ?{ $_.PSIsContainer } | %{ Write-Host $_.FullName 
(dir $_.FullName -recurse | ?{ $_.PSIsContainer -eq $false } | Measure-Object).Count } 

または

dir -recurse | ?{ $_.PSIsContainer } | %{ Write-Host $_.FullName 
(dir $_.FullName -recurse | ?{ $_.PSIsContainer -eq $false }).Count } 

はただのFileInfo項目を数えます。

ちょうど私を好きにして、 "dir"ではなく "Get-ChildItem"を使用してください。それは同じですが、それはそうcmdのように見えます。 Dir/r - >分かります Get-ChildItem -Recurse - > super Dir -Recurse --sは不気味なハイブリッドのようです。

+0

ありがとうございます。これはうまくいった。トップフォルダの総数には興味がないので、2回目は必要ありません。 dirとGet-ChildItemについてのコメントと、不気味なハイブリッドのことについて詳しく説明できますか?どういう意味ですか? – Egil

+0

ちょうど "dir"は古いcmd構文です。 Powershellの "dir"は "Get-childItem"のエイリアスです。 Powershellを愛する私のPowershellは、Powershellと組み合わせたcmd構文をハンドリングすることはできません。しかし、それは魅力のように動作します。 –

+0

この回答が正しい場合は、解決策として同意してください。 –

関連する問題