Recursively count files in subfolders

后端 未结 6 1833
耶瑟儿~
耶瑟儿~ 2020-12-29 10:08

I am trying to count the files in all subfolders in a directory and display them in a list.

For instance the following dirtree:

TEST
    /VOL01
              


        
6条回答
  •  一生所求
    2020-12-29 10:28

    Similar to David's solution this will work in Powershell v3.0 and does not uses aliases in case someone is not familiar with them

    Get-ChildItem -Directory | ForEach-Object { Write-Host $_.FullName $(Get-ChildItem $_ | Measure-Object).Count}
    

    Answer Supplement

    Based on a comment about keeping with your function and loop structure i provide the following. Note: I do not condone this solution as it is ugly and the built in cmdlets handle this very well. However I like to help so here is an update of your script.

    Function DirX($directory)
    {
        $output = @{}
    
        foreach ($singleDirectory in (Get-ChildItem $directory -Recurse -Directory))
        {
            $count = 0 
            foreach($singleFile in Get-ChildItem $singleDirectory.FullName)
            {
                $count++
            }
            $output.Add($singleDirectory.FullName,$count)
        }
    
        $output | Out-String
    }
    

    For each $singleDirectory count all files using $count ( which gets reset before the next sub loop ) and output each finding to a hash table. At the end output the hashtable as a string. In your question you looked like you wanted an object output instead of straight text.

提交回复
热议问题