[玩转系统] 如何在 PowerShell 中获取文件夹的大小 |在 PowerShell 中获取文件夹大小(以 GB 为单位)
作者:精品下载站 日期:2024-12-14 05:11:07 浏览:16 分类:玩电脑
如何在 PowerShell 中获取文件夹的大小 |在 PowerShell 中获取文件夹大小(以 GB 为单位)
最近,我需要在PowerShell中获取文件夹的大小。在这篇博文中,我们将探索使用 PowerShell 获取文件夹大小的不同方法或 cmdlet,并附有示例和脚本。
要使用 PowerShell 获取文件夹的大小,您可以将 Get-ChildItem cmdlet 与 Measure-Object cmdlet 结合使用。例如,$folderSize=(Get-ChildItem -Path “C:\ExampleFolder” -Recurse -File | Measure-Object -Property Length -Sum).Sum 将为您提供文件夹的大小(以字节为单位)。
如何在 PowerShell 中获取文件夹的大小
有多种方法可以在 PowerShell 中获取文件夹的大小。让我们通过示例来讨论每种方法。
1. 使用 Get-ChildItem 和 Measure-Object
在 PowerShell 中计算文件夹大小的最简单方法之一是结合使用 Get-ChildItem
cmdlet 和 Measure-Object
。 Get-ChildItem
cmdlet 检索指定目录中的文件和文件夹,Measure-Object 计算这些对象的属性,例如它们的大小总和。
以下是如何使用这些 cmdlet 获取 PowerShell 中文件夹大小的基本示例:
$folderPath = "C:\MyFolder"
$folderSize = (Get-ChildItem -Path $folderPath -Recurse -File | Measure-Object -Property Length -Sum).Sum
$folderSizeInMB = [math]::Round($folderSize / 1MB, 2)
Write-Host "The size of $folderPath is $folderSizeInMB MB"
在此脚本中,我们指定文件夹路径并使用 -Recurse
标志来包含所有子文件夹和文件。 -File
开关确保仅测量文件,而不测量子目录。然后,Measure-Object
cmdlet 将通过管道传输来汇总所有文件的 Length
属性,该属性表示文件的大小(以字节为单位)。最后,我们将大小转换为兆字节以便于阅读。
查看下面的屏幕截图,了解我使用 VS code 执行 PowerShell 脚本后的输出。
2. 使用 COM 对象提高性能
对于较大的目录,您可能会注意到 Get-ChildItem
方法可能会很慢。为了加快该过程,您可以使用 COM 对象,例如 Scripting.FileSystemObject,它提供了一种更快的方法来获取文件夹大小。
以下是如何使用 COM 对象获取 PowerShell 中文件夹的大小:
$folderPath = "C:\MyFolder"
$fsObject = New-Object -ComObject Scripting.FileSystemObject
$folder = $fsObject.GetFolder($folderPath)
$folderSize = $folder.Size
$folderSizeInGB = [math]::Round($folderSize / 1GB, 2)
Write-Host "The size of $folderPath is $folderSizeInGB GB"
此脚本为文件系统操作创建一个新的 COM 对象并检索指定文件夹的大小。然后将大小转换为千兆字节,以便更方便地测量。
3. 使用 Robocopy 进行高级脚本编写
获取文件夹大小的另一种高级方法是使用robocopy.exe。 Robocopy 是 Windows 中包含的一个强大的文件复制命令行工具,但它也可用于通过启用其日志记录功能然后解析输出来计算文件夹大小。
以下是使用 Robocopy 获取文件夹大小的示例:
$folderPath = "C:\ExampleFolder"
$tempFile = "C:\temp\robocopy_log.txt"
robocopy $folderPath $folderPath /L /XJ /E /NFL /NDL /NJH /NJS /nc /ns /np > $tempFile
$folderSize = (Select-String "Bytes :.*" $tempFile -AllMatches | ForEach-Object { $_.Matches } | ForEach-Object { $_.Value.Split(":")[1].Trim() } | Measure-Object -Sum).Sum
$folderSizeInTB = [math]::Round($folderSize / 1TB, 4)
Write-Host "The size of $folderPath is $folderSizeInTB TB"
该脚本使用robocopy
生成日志文件,而不实际复制任何文件(/L
开关)。然后,它解析日志以查找总字节并将大小转换为 TB。
以人类可读的格式显示文件夹大小
当向用户显示文件夹大小时,以人类可读的方式格式化大小通常很有帮助,例如 KB、MB、GB 等。下面是获取文件夹大小并将其转换为更易读的格式的 PowerShell 脚本:
function Format-FileSize {
Param ([int64]$size)
If ($size -gt 1TB) {
[math]::Round($size / 1TB, 2).ToString() + " TB"
} ElseIf ($size -gt 1GB) {
[math]::Round($size / 1GB, 2).ToString() + " GB"
} ElseIf ($size -gt 1MB) {
[math]::Round($size / 1MB, 2).ToString() + " MB"
} ElseIf ($size -gt 1KB) {
[math]::Round($size / 1KB, 2).ToString() + " KB"
} Else {
$size.ToString() + " B"
}
}
$folderPath = "C:\MyFolder"
$folderSize = (Get-ChildItem -Path $folderPath -Recurse -File | Measure-Object -Property Length -Sum).Sum
$readableSize = Format-FileSize -size $folderSize
Write-Host "The size of $folderPath is $readableSize"
此脚本定义了一个函数Format-FileSize
,该函数获取字节大小并将其转换为最大的适当单位,然后附加单位缩写。然后它会计算文件夹大小并使用此函数对其进行格式化。
在 PowerShell 中获取文件夹大小(以 GB 为单位)
要使用 PowerShell 获取文件夹的大小(以千兆字节 (GB) 为单位),您通常需要将 Get-ChildItem
cmdlet 与 Measure-Object
结合使用。 Get-ChildItem
cmdlet 检索指定目录中的所有项目(文件和文件夹),Measure-Object
将计算这些项目的大小总和。由于默认情况下大小以字节为单位计算,因此您需要将其转换为千兆字节。
以下是该过程的详细分解:
- 检索项目:使用
Get-ChildItem
列出目标文件夹中的所有文件。-Recurse
参数确保命令包含所有子文件夹及其文件。 - 测量大小:将
Get-ChildItem
的输出通过管道传输到Measure-Object
,以求和的Length
属性所有文件,表示它们的大小(以字节为单位)。 - 转换为 GB:由于默认输出以字节为单位,因此您需要将其转换为千兆字节。一千兆字节有 1,073,741,824 字节(1GB=2^30 字节)。
下面是封装此过程的 PowerShell 脚本:
# Define the path of the folder you want to measure
$folderPath = "C:\MyFolder"
# Get the size of the folder in bytes
$folderSizeBytes = (Get-ChildItem -Path $folderPath -Recurse -File | Measure-Object -Property Length -Sum).Sum
# Convert the size to gigabytes
$folderSizeGB = [math]::Round($folderSizeBytes / 1GB, 2)
# Output the folder size in GB
Write-Host "The size of the folder is $folderSizeGB GB"
在此脚本中:
$folderPath
应替换为目标文件夹的路径。-File
参数用于确保仅测量文件,而不测量子目录本身。[math]::Round()
用于将结果四舍五入到小数点后两位以方便阅读。
请记住,此方法根据文件的实际数据长度计算大小,并且不考虑由于文件系统分配单元大小而导致的任何潜在开销,这可能会使磁盘上的大小略大于文件大小的总和。
在 PowerShell 中获取文件夹大小和文件计数
我的一位客户要求获取文件夹大小和文件计数,我使用 PowerShell 做到了这一点。
PowerShell 提供的查找文件夹大小及其包含的文件数量的最简单方法之一是使用带有 Measure-Object 的 Get-ChildItem cmdlet。 Get-ChildItem cmdlet 检索指定路径中的文件和文件夹,Measure-Object 计算对象的属性,例如其大小总和。
这是一个完整的 PowerShell 脚本,它将提供文件夹大小以及文件计数。
$FolderPath = "C:\MyFolder"
$Files = Get-ChildItem -Path $FolderPath -Recurse -File
$Folders = Get-ChildItem -Path $FolderPath -Recurse -Directory
$TotalSize = ($Files | Measure-Object -Property Length -Sum).Sum
$FileCount = $Files.Count
$FolderCount = $Folders.Count
$TotalSizeInMB = [math]::Round($TotalSize / 1MB, 2)
Write-Host "Total size: $TotalSizeInMB MB"
Write-Host "Number of files: $FileCount"
Write-Host "Number of folders: $FolderCount"
当我使用 VS code 执行脚本后,您可以在下面的屏幕截图中看到输出,它提供了文件夹大小(以 MB 为单位)和文件计数。
结论
PowerShell 提供了多种确定文件夹大小的方法。在本教程中,我解释了如何在 PowerShell 中获取以 GB 为单位的文件夹大小。另外,我还解释了如何在 PowerShell 中获取文件夹大小和文件计数。
此外,我们还了解了如何在 PowerShell 中以人类可读的格式显示文件夹大小。
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag