【问题标题】:Display directory structure with size in Powershell在 Powershell 中显示带有大小的目录结构
【发布时间】:2011-04-22 00:50:31
【问题描述】:

尝试使用“dir”命令显示子文件夹和文件的大小。 谷歌搜索“powershell 目录大小”后,我发现了两个有用的链接

  1. 确定文件夹的大小http://technet.microsoft.com/en-us/library/ff730945.aspx
  2. 获取目录总大小PowerShell Script to Get a Directory Total Size的PowerShell脚本

这些灵魂很棒,但我正在寻找类似于“dir”输出的东西,方便且简单,并且可以在文件夹结构中的任何位置使用。

所以,我最终这样做了,有什么建议可以让它变得简单、优雅、高效。

Get-ChildItem | 
Format-Table  -AutoSize Mode, LastWriteTime, Name,
     @{ Label="Length"; alignment="Left";
       Expression={ 
                    if($_.PSIsContainer -eq $True) 
                        {(New-Object -com  Scripting.FileSystemObject).GetFolder( $_.FullName).Size}  
                    else 
                        {$_.Length} 
                  }
     };  

谢谢。

【问题讨论】:

    标签: powershell directory size


    【解决方案1】:

    第一个小修改是避免为每个目录创建一个新的 FileSystemObject。使其成为一个函数并将新对象拉出管道。

    function DirWithSize($path=$pwd)
    {
        $fso = New-Object -com  Scripting.FileSystemObject
        Get-ChildItem | Format-Table  -AutoSize Mode, LastWriteTime, Name, 
                        @{ Label="Length"; alignment="Left"; Expression={  
                             if($_.PSIsContainer)  
                                 {$fso.GetFolder( $_.FullName).Size}   
                             else  
                                 {$_.Length}  
                             } 
                         }
    }
    

    如果你想完全避免使用 COM,你可以像这样使用 PowerShell 来计算目录大小:

    function DirWithSize($path=$pwd)
    {
        Get-ChildItem $path | 
            Foreach {if (!$_.PSIsContainer) {$_} `
                     else {
                         $size=0; `
                         Get-ChildItem $_ -r | Foreach {$size += $_.Length}; `
                         Add-Member NoteProperty Length $size -Inp $_ -PassThru `
                     }} |
            Format-Table Mode, LastWriteTime, Name, Length -Auto
    }
    

    【讨论】:

    • 谢谢Keith,我最终将这个函数放在了配置文件中,这样我可以在使用PS时访问它
    • @Keith Hill:+1,如果我可以两次,我会...我正在尝试整理我的 HD,因为我的 vmware 快死了,并且想轻松查看磁盘空间的去向.这是一个真正的帮助!
    • 又回来了! :-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-14
    • 2017-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多