powershell - 在 Powershell 中显示具有大小的目录结构

标签 powershell directory size

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

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

  • 这些内容很棒,但我正在寻找类似于“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} 
                      }
         };  
    

    谢谢你。

    最佳答案

    第一个次要模式是避免为每个目录创建一个新的 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
    }
    

    关于powershell - 在 Powershell 中显示具有大小的目录结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3876279/

    相关文章:

    email - Powershell电子邮件:如何发送具有高度重要性的电子邮件?

    regex - 使用正则表达式拆分从IP地址中删除第一个八位位组

    windows - 比较Windows中的2个目录

    azure - 使用 PowerShell 查询多域中的 SamAccountName

    powershell - PowerShell:使用Out-File将Dir列表的特定部分写入文本文件

    file - Xamarin 形式 : How to create folder and a file in device external storage?

    c++ - WIN32_FIND_DATA - 获取绝对路径

    c++ - 从数组中释放元素

    javascript - 如何检测jquery中文档大小的变化

    Java:为什么元素为零的 ArrayList 的打印输出是零?