gpt4 book ai didi

windows - 获取目录总大小的 PowerShell 脚本

转载 作者:可可西里 更新时间:2023-11-01 12:20:21 25 4
gpt4 key购买 nike

我需要递归地获取目录的大小。我每个月都必须这样做,所以我想制作一个 PowerShell脚本来做到这一点。

我该怎么做?

最佳答案

尝试以下操作

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

这实际上会生成一些摘要对象,其中将包含项目计数。不过,您可以只获取 Sum 属性,这将是长度的总和

$sum = (Get-DirectorySize "Some\File\Path").Sum

编辑为什么这行得通?

让我们按管道的组件对其进行分解。 gci -re $root 命令将递归地从起始 $root 目录中获取所有项目,然后将它们推送到管道中。因此 $root 下的每个文件和目录都将通过第二个表达式 ?{ -not $_.PSIsContainer }。传递给此表达式的每个文件/目录都可以通过变量 $_ 访问。前面的?表示这是一个过滤器表达式,意味着只保留管道中满足此条件的值。 PSIsContainer 方法将为目录返回 true。所以实际上过滤器表达式只保留文件值。最终的 cmdlet measure-object 将对管道中剩余的所有值的属性 Length 的值求和。因此,它实际上是为当前目录下的所有文件(递归地)调用 Fileinfo.Length 并对值求和。

关于windows - 获取目录总大小的 PowerShell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/809014/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com