在前一个技能中我们介绍了 Get-DisplayFileSize
函数,它可以自动将字节数转换成容易阅读的带单位的数字,例如 “KB” 和 “MB”。
使用 Select-Object
指令,您可以创建一个带有易读的文件尺寸的文件夹列表:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| $Length = @{ Name = "Length" Expression = { if ($_.PSIsContainer) { return } $Number = $_.Length $newNumber = $Number $unit = 'Bytes,KB,MB,GB,TB,PB,EB,ZB' -split ',' $i = 0 while ($newNumber -ge 1KB -and $i -lt $unit.Length) { $newNumber /= 1KB $i++ }
if ($i -eq $null) { $decimals = 0 } else { $decimals = 2 } $displayText = "'{0,10:N$decimals} {1}'" -f $newNumber, $unit[$i] $Number = $Number | Add-Member -MemberType ScriptMethod -Name ToString -Value ([Scriptblock]::Create($displayText)) -Force -PassThru return $Number } }
dir $env:windir | Select-Object -Property Mode, LastWriteTime, $Length, Name | Sort-Object -Property Length
|
请注意计算属性 Length
仍然可以用于排序。它仍是字节数据,只是显示的方式改变了。