通过管道列出文件夹大小

Jer*_*ard 2 powershell

如何通过每个文件夹/子文件夹中所有文件的总和列出目录中每个文件夹的大小?

我的最新尝试:

ls | foreach-object { select-object Name, @{Name = "Size"; Expression = { ls $_ -recurse | measure-object -property length -sum } }
Run Code Online (Sandbox Code Playgroud)

我做了其他尝试,但没有成功.我们非常欢迎任何建议或解决方案.我觉得我错过了一些非常明显的东西.

输出应如下所示:

名称大小

它应该列出根文件夹中的每个文件夹以及该文件夹的文件夹子文件夹的大小.

我能够通过以下方式解决问题:

param([String]$path)
ls $path | Add-Member -Force -Passthru -Type ScriptProperty -Name Size -Value {  
   ls $path\$this -recurse | Measure -Sum Length | Select-Object -Expand Sum } | 
   Select-Object Name, @{Name = "Size(MB)"; Expression = {"{0:N0}" -f ($_.Size / 1Mb)} } | sort "Size(MB)" -descending
Run Code Online (Sandbox Code Playgroud)

Jay*_*kul 5

老实说,我认为你基本上得到了它.

使用Add-Member可以更优雅:

ls | Add-Member -Force -Passthru -Type ScriptProperty -Name Length -Value { 
   ls $this -recurse | Measure -Sum Length | Select -Expand Sum }
Run Code Online (Sandbox Code Playgroud)

PSCX与格式混淆,即使你实际上有一个大小,也会输出大小的"".如果您正在使用PSCX,则必须添加一个明确的| Format-Table Mode, LastWriteTime, Length, Name -Auto