ZBLOG

Get-ChildItem | Select-Object Name, @{Name="Size"; Expression={ if ($_.PSIsContainer) { "{0:N2} MB" -f ((Get-ChildItem $_.FullName -Recurse | Measure-Object Length -Sum).Sum / 1MB) } else { "{0:N2} ...

您希望将文件/文件夹大小以 GB 为单位显示,同时保持原有逻辑。以下是优化后的脚本:

  1. Get-ChildItem | Select-Object Name,
  2. @{Name="Size"; Expression={
  3. if ($_.PSIsContainer) {
  4. $size = (Get-ChildItem $_.FullName -Recurse -File | Measure-Object Length -Sum).Sum
  5. if ($size -ge 1GB) { "{0:N2} GB" -f ($size / 1GB) }
  6. elseif ($size -ge 1MB) { "{0:N2} MB" -f ($size / 1MB) }
  7. else { "{0:N2} KB" -f ($size / 1KB) }
  8. } else {
  9. if ($_.Length -ge 1GB) { "{0:N2} GB" -f ($_.Length / 1GB) }
  10. elseif ($_.Length -ge 1MB) { "{0:N2} MB" -f ($_.Length / 1MB) }
  11. else { "{0:N2} KB" -f ($_.Length / 1KB) }
  12. }
  13. }},
  14. LastWriteTime,
  15. Mode | Format-Table -AutoSize

⚡️ 关键改进:

优化点 原脚本问题 新脚本解决方案
单位智能转换 强制所有文件夹显示为MB 根据实际大小动态选择 GB/MB/KB
跳过空文件夹计算 对空文件夹仍会执行递归 -File参数避免无意义的目录遍历
文件与文件夹统一逻辑 文件固定用KB,文件夹固定用MB 均按实际大小自动切换单位

🚀 性能增强技巧(大目录适用):

  1. # 添加并行处理和进度条(PowerShell 7+)
  2. Get-ChildItem | ForEach-Object -Parallel {
  3. $item = $_
  4. $size = if ($item.PSIsContainer) {
  5. (Get-ChildItem $item.FullName -Recurse -File | Measure-Object Length -Sum).Sum
  6. } else {
  7. $item.Length
  8. }
  9. [PSCustomObject]@{
  10. Name = $item.Name
  11. Size = switch ($size) {
  12. {$_ -ge 1GB} { "{0:N2} GB" -f ($_ / 1GB); break }
  13. {$_ -ge 1MB} { "{0:N2} MB" -f ($_ / 1MB); break }
  14. default { "{0:N2} KB" -f ($_ / 1KB) }
  15. }
  16. LastWriteTime = $item.LastWriteTime
  17. Mode = $item.Mode
  18. }
  19. } | Format-Table -AutoSize

📊 输出示例:

  1. Name Size LastWriteTime Mode
  2. ---- ---- ------------- ----
  3. Documents 12.34 GB 2023-10-01 d-r--
  4. setup.exe 15.62 MB 2023-09-15 --a--
  5. readme.txt 4.20 KB 2023-10-05 --a--

如果需要进一步限制递归深度或排除特定文件类型,可以追加 `


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=23497

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?