首页 > 解决方案 > 计算多个文件夹的文件夹大小

问题描述

我想构建一个脚本,它可以:

这将用于备份/恢复脚本。在进行备份之前,我们想知道备份的总大小,以及哪些文件夹包含大量数据。

输出将类似于:

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

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

标签: powershellbatch-filedirectory

解决方案


你可以试试这个。

利用: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

MB不会因为 SUM 的计算而投入...

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
}

推荐阅读