【问题标题】:Calculate folder size for multiple folders [closed]计算多个文件夹的文件夹大小[关闭]
【发布时间】:2019-01-06 15:42:36
【问题描述】:

我想构建一个脚本:

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

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

输出类似于:

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

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

【问题讨论】:

  • 请告诉我们您到目前为止尝试了什么以及失败的地方。我们不是来为你编写所有代码的;)看看How to Askminimal reproducible example。还有关于使用什么的问题,如果可能的话,总是使用 powershell。
  • gallery.technet.microsoft.com/scriptcenter/… 中的 sn-p 实际上工作得很好。我想知道是否有人有一个完全符合我要求的脚本。感谢您的建议:)
  • 再次......我们不是来为您编写代码,也不是为基本任务提供脚本:) 如果您已经找到了一个可以解决一半问题的 sn-p,请尝试解决自己解决问题,如果遇到特定问题,请随时寻求帮助以解决问题。
  • 再次......感谢您的建议:)

标签: powershell batch-file directory


【解决方案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
}

【讨论】:

  • 非常感谢,这是我想要构建的一个很好的开始。这是输出:名称值 ---- ----- C:\folder1 0,00 C: \folder3\folder1 1,27 C:\folder2 0,00 总计 127,00 我将尝试理解代码中的所有内容并提出相应的问题
猜你喜欢
  • 2011-08-17
  • 2011-01-12
  • 1970-01-01
  • 2022-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多