加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

Windows – PowerShell脚本获取目录的总大小

发布时间:2020-12-13 20:54:30 所属栏目:Windows 来源:网络整理
导读:我需要递归的获取一个目录的大
我需要递归的获取一个目录的大小。我每个月都要这样做,所以我想制作一个 PowerShell脚本来做到这一点。

我该怎么做?

尝试以下
function Get-DirectorySize() {
  param ([string]$root = $(resolve-path .))
  gci -re $root |
    ?{ -not $_.PSIsContainer } | 
    measure-object -sum -property Length
}

这实际上产生了一个摘要对象,其中将包括项数。你可以只是抓住Sum属性,而这将是长度的总和

$sum = (Get-DirectorySize "SomeFilePath").Sum

EDIT为什么这样工作?

我们来分解管道的组件。 gci -re $ root命令将从起始$根目录中递归获取所有项目,然后将其推入管道。那么$ root下的每个文件和目录都将通过第二个表达式?{-not $ _。PSIsContainer}。传递给此表达式的每个文件/目录可以通过变量$ _访问。前面的?表示这是一个过滤器表达式,仅保留符合此条件的管道中的值。 PSIsContainer方法将为目录返回true。因此,过滤器表达式只保留文件值。最终的cmdlet measure对象将对流水线中剩余的所有值的总和值进行总和。所以它本质上是为当前目录下的所有文件(递归)调用Fileinfo.Length,并对值进行求和。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读