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 为单位显示,同时保持原有逻辑。以下是优化后的脚本:

Get-ChildItem | Select-Object Name, 
    @{Name="Size"; Expression={ 
        if ($_.PSIsContainer) { 
            $size = (Get-ChildItem $_.FullName -Recurse -File | Measure-Object Length -Sum).Sum
            if ($size -ge 1GB) { "{0:N2} GB" -f ($size / 1GB) }
            elseif ($size -ge 1MB) { "{0:N2} MB" -f ($size / 1MB) }
            else { "{0:N2} KB" -f ($size / 1KB) }
        } else { 
            if ($_.Length -ge 1GB) { "{0:N2} GB" -f ($_.Length / 1GB) }
            elseif ($_.Length -ge 1MB) { "{0:N2} MB" -f ($_.Length / 1MB) }
            else { "{0:N2} KB" -f ($_.Length / 1KB) }
        }
    }}, 
    LastWriteTime,
    Mode | Format-Table -AutoSize

⚡️ 关键改进:

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

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

# 添加并行处理和进度条(PowerShell 7+)
Get-ChildItem | ForEach-Object -Parallel {
    $item = $_
    $size = if ($item.PSIsContainer) {
        (Get-ChildItem $item.FullName -Recurse -File | Measure-Object Length -Sum).Sum
    } else {
        $item.Length
    }
    
    [PSCustomObject]@{
        Name = $item.Name
        Size = switch ($size) {
            {$_ -ge 1GB} { "{0:N2} GB" -f ($_ / 1GB); break }
            {$_ -ge 1MB} { "{0:N2} MB" -f ($_ / 1MB); break }
            default      { "{0:N2} KB" -f ($_ / 1KB) }
        }
        LastWriteTime = $item.LastWriteTime
        Mode = $item.Mode
    }
} | Format-Table -AutoSize

📊 输出示例:

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

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


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

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

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

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

联系我们

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

微信号:3007537140

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

关注我们
x

注册

已经有帐号?