如何在Windows上使用PowerShell计算文件夹大小
如果您想调查哪些文件夹占用了您的存储空间,您可以检查文件夹的大小以确定是什么占用了您的驱动器。 如果您需要将大文件夹移动到 USB 驱动器或云存储,检查文件夹大小也很有帮助。 在 Windows 上执行此操作的一个简单方法是使用文件资源管理器并打开文件夹属性对话框。
但是,文件资源管理器确定大文件夹的大小可能会很慢。 如果您想管理组织中多台计算机上的文件和文件夹,这并不理想。 为了解决这个问题,您可以使用 PowerShell 快速计算 Windows 上的文件夹大小。
推荐:修复Windows Network Security Key Mismatch错误
如何在 Windows 上使用 PowerShell 计算文件夹的大小
要计算文件夹的大小,您需要使用两个 PowerShell cmdlet:Get-ChildItem 和 Measure-Object,后跟 Length 属性和 Sum 参数。
Get-ChildItem cmdlet 允许您从指定目录及其子目录检索信息。 Measure-Object cmdlet 以及关联的属性和参数计算 Get-ChildItem(别名“cgi”)cmdlet 返回的项目的长度属性总和。
如果您是 PowerShell 新手,您可能需要阅读我们有关基本 PowerShell cmdlet 的解释,以了解 PowerShell 的基础知识。
现在您已经熟悉了 PowerShell 命令,下面介绍如何使用它们来获取任意文件夹大小。
- 按 Win 键和输入 powershell。
- 接下来,右键单击 Windows PowerShell 并选择 Run as administrator 以管理员身份运行。 点击 Yes 是的 如果提示 User Account Control用户帐户控制。
- 在 PowerShell 窗口中,键入以下命令:
Get-ChildItem FolderPath | Measure-Object -Property Length -sum
- 在上面的命令中,替换 FolderPath 文件夹路径 与保存文件夹的目录路径。 例如,如果您想计算位于 E:\ 驱动器,那么完整的命令将如下所示:
Get-ChildItem E:\Download | Measure-Object -Property Length -sum
- 返回结果将显示文件夹中的项目计数及其大小(以字节为单位)。 您需要将总和除以 1024 获取尺寸 KBs (千字节)。 将其除以 1024 再次获取尺寸 MB (兆字节)等等。
或者,您可以使用 .sum 属性检索总大小并将其除以 100 万或十亿以将其转换为兆字节或千兆字节。
例如,如果您想知道以千兆字节 (MB) 为单位的值,请键入以下命令并按 进入:
(gci E:\Download | measure Length -s).sum / 1Mb
同样,替换 1MB 和 1GB 检索文件夹大小(以 GB 为单位)。
(gci E:\Download | measure Length -s).sum / 1Gb
如果要标识目录中特定类型文件的大小,可以使用通配符 * 后跟文件扩展名类型。 它只会显示指定文件类型的文件大小。
例如,要查找文件夹中的图像占用了多少空间,请使用以下命令:
(gci E:\download *.jpg | measure Length -s).sum / 1Mb
添加通配符可让您确定特定文件类型是否占用文件夹中的最多空间。 然后,您可以根据文件扩展名过滤内容,并根据需要删除或移动它们。
如何使用 PowerShell 获取子文件夹大小
上面的命令只会计算主目录或文件夹的大小。 要计算指定目录及其子目录中文件的总大小,您需要添加 -Recurse 上述命令的参数。 此外,我们将使用 -force 参数来访问隐藏文件和系统文件。
例如,要获取 C:\Users 目录及其子目录(包括隐藏文件)的总大小,PowerShell 命令将如下所示:
((gci -force c:\Users -Recurse -ErrorAction SilentlyContinue| measure Length -s).sum / 1Gb)
此实例中的输出显示大约 54 GB。 作为 c:\users 文件夹的总大小。 在上面的命令中,-ErrorAction SilentlyContinue 参数用于抑制该过程中可能出现的任何错误消息。
如何使用 PowerShell 以表格格式获取子文件夹大小
如果您想单独了解所有子文件夹的大小,可以运行 PowerShell 脚本来获取所有子文件夹及其大小的图形视图。 如果您有一个包含多个子文件夹的大目录并且需要经常处理它们,那么脚本通常会很有帮助。
要运行此脚本,您可以使用 PowerShell ISE。 操作方法如下:
- 按 Win 并输入 PowerShell ISE。 点击 Windows PowerShell ISE 从搜索结果来看。
- 接下来,将以下命令复制并粘贴到 PowerShell ISE 控制台中。 确保将目录从 c:\ 更改为您的首选目录。
$targetfolder = 'C:\' $dataColl = Get-ChildItem -Force $targetfolder -Directory -ErrorAction SilentlyContinue | ForEach-Object { $len = Get-ChildItem -Recurse -Force $_.FullName -File -ErrorAction SilentlyContinue | Measure-Object -Property Length -Sum | Select-Object -ExpandProperty Sum $foldername = $_.FullName $foldersize = '{0:N2} GB' -f ($len / 1Gb) [PSCustomObject]@{ foldername = $foldername foldersizeGb = $foldersize } } $dataColl | Out-GridView -Title "Size of Subdirectories in $targetfolder"
- 接下来,单击 Run Script 运行脚本 或按 F5 并等待脚本执行。 根据文件夹大小,您会看到“Size Of Subdirectories子目录的大小” 对话框列出所有子目录及其大小。
除此之外,您还可以使用 PowerShell 比较运算符来过滤结果。 例如,要获取 2023 年 6 月至 2023 年 7 月之间创建的文件夹的文件大小,您可以使用以下命令:
(gci -force E:\Download –Recurse -ErrorAction SilentlyContinue | ? {$_.CreationTime -gt '01/23/23' -AND $_.CreationTime -lt '02/23/23'}| measure Length -s).sum / 1Gb
在上面的命令中, “?” 是一个别名Where-Object 小命令, -gt、-AND、-It 是比较运算符,并且 CreationTime创建时间 是一个条件。 该命令检查子目录中文件的创建时间是否在指定的日期范围内,并且仅在满足条件时才显示输出。 如果出现错误,请确保命令中的日期和时间格式与系统格式匹配,然后重试。
使用 PowerShell 获取文件夹和子文件夹大小
Windows 上的文件资源管理器可以帮助您计算任何文件夹和文件的大小。 但是,如果您使用多个大型文件夹或在需要管理数百台计算机的组织中,则使用 PowerShell 可以帮助您更快地完成工作。
也就是说,如果您更喜欢基于 GUI 的解决方案,请考虑使用磁盘分析器工具。 这些工具可以帮助您可视化系统的文件结构,并显示一份报告,详细说明占用系统上大部分空间的内容。