2017-07-31 39 views
0

我有一堆文件夾都有兩個子文件夾,並且這兩個子文件夾各有一個子文件夾。我已經編寫了一個腳本,它根據文件名將圖像分類到這些文件夾中,並且我找到了一個代碼片段,可以生成每個目錄的列表以及其中有多少項目的計數。問題是我希望遞歸搜索不會將子文件夾作爲一個文件進行計數,同時仍在搜索它們。我使用目前的代碼如下:遞歸計數文件,而不計算子文件夾

#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'的第一個'dir'和'-File'中使用'-Directory'參數即可。 – 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的項目。

只是幫我一個忙,並使用「Get-ChildItem」而不是「dir」。它是一樣的,但它看起來很像cmd。 Dir/r - >我明白了 Get-ChildItem -Recurse - > super Dir -Recurse --s就像一個令人毛骨悚然的混合。

+0

謝謝。這工作。雖然在我的情況下不需要第二個流氓軟件,因爲我對頂部文件夾中的總數不感興趣。 你能否詳細說說你對dir和Get-ChildItem以及令人毛骨悚然的混合物的評論。你什麼意思? – Egil

+0

只是「dir」是一箇舊的cmd語法。 Powershell中的 「dir」是「Get-childItem」的別名。我的Powershell愛的大腦不能使用與Powershell混合的cmd語法。但它會像魅力一樣工作。 –

+0

如果這個答案是正確的,請接受爲解決方案。 –

相關問題