计算多个文件夹的文件夹大小

时间:2018-07-30 11:37:08

标签: powershell batch-file directory

我想构建一个执行以下操作的脚本:

  • 计算特定路径的文件夹总大小;
  • 按MB显示每个路径的文件夹大小(包括递归子文件夹,未显示);
  • 计算所有列出的文件夹的总大小。

这将在备份/还原脚本中使用。在进行备份之前,我们想了解备份的总大小,以及其中包含大量数据的文件夹。

输出类似于:

Total size: 1456MB
    C:/folder1 100MB
    C:/folder2 123MB
    C:/folder3/folder1 1233MB

对于某些人来说也许很简单。我已经搜索并尝试了几个小时,但没有得到我所需要的。任何使用哪种代码语言或特定脚本的建议都将有所帮助!

1 个答案:

答案 0 :(得分:1)

您可以尝试这个。

使用:Get-FileSize "C:\folder1","C:\folder2","C:\folder3\folder1"

输出:

Name                           Value
----                           ----- 
Total                          1456.00
C:\folder1                     100.00
C:\folder2                     123.00
C:\folder3\folder1             1233.00

由于SUM的计算,不会抛出MB ...

Function Get-FileSize([string[]]$Array) {

$Output = @{}

Foreach($String in $Array){
    $FolderInfo = Get-ChildItem -Recurse $String
    $totalSize = "{0:N2}" -f (($FolderInfo | Measure-Object -Property Length -Sum -ErrorAction Stop).Sum / 1MB)
    $Output.add($String, $totalSize)
}
$Output.add("Total", "{0:N2}" -f ($Output.Values | Measure-Object -Sum).Sum)
$Output
}