powershell - 计算多个文件夹的文件夹大小
问题描述
我想构建一个脚本,它可以:
- 计算特定路径的总文件夹大小;
- 以 MB 为单位显示每个路径的文件夹大小(包括递归子文件夹,不显示);
- 计算所有列出的文件夹的总大小。
这将用于备份/恢复脚本。在进行备份之前,我们想知道备份的总大小,以及哪些文件夹包含大量数据。
输出将类似于:
Total size: 1456MB
C:/folder1 100MB
C:/folder2 123MB
C:/folder3/folder1 1233MB
也许对你们中的一些人来说很简单。我已经搜索并尝试了几个小时,但从来没有得到我需要的东西。任何使用哪种代码语言或特定脚本的建议都会有所帮助!
解决方案
你可以试试这个。
利用: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
}
推荐阅读
- c# - 如何在 C# 中创建匹配特定条件的组合组?
- nginx - Nginx:创建一个位置以重定向到另一个位置
- javascript - Javascript中是否有任何用于映射嵌套数组的库或捷径?
- javascript - 如何删除包含在双引号内的子字符串
- node.js - 无法在 graphql 请求拦截上设置“别名”属性
- r - ggMarginal:如何自定义箱线图大小和顺序?
- json - 在终端中运行完成后,如何将光标从终端自动移动到 VS Code 中的代码编辑器?
- php - Symfony 序列化器子分组可能吗?
- wireshark - 如何重放 pcap 文件并从 TCP/IP Listner 读取数据?
- visual-studio - Windows更新后文件被锁定:“w3wp.exe”