[玩转系统] PowerShell - 计算文件夹中的文件数量
作者:精品下载站 日期:2024-12-14 05:24:31 浏览:15 分类:玩电脑
PowerShell - 计算文件夹中的文件数量
在 PowerShell 中计算文件夹中的文件数量
我们可以通过不同的方式使用 Measure-Object
cmdlet 来满足我们的项目需求。但是,在继续之前,有必要了解我们将在本文中使用的不同路径上有多少文件和文件夹。
E:\Test
包含三个文件夹(FolderA
、FolderB
和FolderC
)和四个文本文件 (File1.txt
、File2.txt
、File3.txt
和File4.txt
)。FolderA
包含四个文本文件(File1.txt
、File2.txt
、File3.txt
和文件4.txt
)FolderB
包含两个文本文件(File1.txt
和File2.txt
)FolderC
有一个文本文件 (File1.txt
)
下面让我们以不同的方式练习Measure-Object
。
使用 Measure-Object 来计算文件和文件夹的数量:
Write-Host ( Get-ChildItem -Path E:\Test | Measure-Object ).Count;
输出 :
7
上面的命令统计了指定路径下的文件和文件夹,因此统计了 E:\Test
文件夹中的 3 个文件夹和 4 个文件。
请注意,它只会计算指定文件夹中的文件,而不计算子文件夹中的文件。要同时计算所有子文件夹中的文件数量,请将 -Recurse
参数与 Get-ChildItem
结合使用。
要仅计算文件夹中的文件,请使用 -File 参数。
使用 Measure-Object 来计算文件和文件夹的数量:
Write-Host ( Get-ChildItem -Path E:\Test -File | Measure-Object ).Count;
输出 :
4
我们使用 -Path
参数来写入所需位置的路径。请记住,如果只有一个位置的路径,我们可以省略 -Path
参数;否则,需要使用 -Path
参数(稍后我们将看到另一个具有多个路径的示例)。
如果我们使用此命令来计算当前目录中的文件和文件夹,我们甚至可以省略位置的路径。为了练习,让我们转到 E:\Test 目录;您可以前往所需位置并使用以下命令。
使用 Measure-Object 来计算文件和文件夹的数量:
Write-Host ( Get-ChildItem | Measure-Object ).Count;
输出 :
7
看,它仍然返回 7
。现在,这个命令是如何工作的?让我们了解从 Measure-Object cmdlet 开始计算对象的属性值。我们用它来计数物体;在我们的例子中,对象可以是文件、文件夹或两者。我们还可以使用它来计算具有给定属性的对象。
我们还可以使用Measure-Object
来计算Average
、Sum
、Minimum
/Maximum
和数值的标准偏差
。但是,如果我们使用 String
对象,则可以使用 Measure-Object
来计算单词数、行数和字符数。
我们使用 .Count
来获取文件/文件夹的数量。接下来,我们使用 Write-Host
将自定义输出写入主机,这意味着在 PowerShell 控制台上显示所需的输出。
请记住,Write-Host
cmdlet 不会生成管道输出,因此我们无法使用管道(也称为管道表示)将 Write-Host
的输出转发到另一个 cmdlet如|
)。
如果您需要使用管道将输出发送到下一个 cmdlet,请使用 Write-Output cmdlet,它可以将给定对象写入管道。接下来,我们有 Get-ChildItem
cmdlet,我们可以使用它从一个或多个位置获取项目和子项目。
在 PowerShell 中计算多个文件夹中的文件数量
在上面的代码中,我们使用一个位置来获取项目/子项目;如果您想对多个位置的项目/子项目进行计数,请参阅以下示例。这是强制指定 -Path
参数的地方,因为现在我们有多个路径(路径数组)。
使用 Measure-Object 来计算文件和文件夹的数量:
Write-Host ( Get-ChildItem -Path "E:\Test", "E:\Test\FolderA" | Measure-Object ).Count;
输出 :
11
这次,我们得到了 11
,因为上面的命令计算了 E:\Test(包含三个文件夹和四个文本文件)和 E:\Test 中的文件和文件夹。 \Test\FolderA(有四个文本文件)。因此,我们可以使用数组运算符 (@()
) 来使用上述命令,如下所示。
使用 Measure-Object 来计算文件和文件夹的数量:
Write-Host ( Get-ChildItem -Path @("E:\Test", "E:\Test\FolderA") | Measure-Object ).Count;
输出 :
11
在 PowerShell 中计算文件夹和子文件夹中的文件数量
要在 PowerShell 中对文件夹和子文件夹中的文件进行计数,请将 -Recurse
参数与 Get-ChildItem
cmdlet 结合使用,并使用 Measure-Object
cmdlet 进行管道传输。
对于本文,我们在 E:\Test 中只有三个文件夹,但想一想,如果我们有数百个文件夹,使用数组运算符或数组为每个文件夹指定路径会是一个很好的方法吗?文件夹?当然不是!
在这种情况下,我们可以使用 -Recurse 参数来获取所有子容器中的所有项目。
使用 Measure-Object 来计算文件和文件夹的数量:
Write-Host ( Get-ChildItem "E:\Test" -Recurse | Measure-Object ).Count;
输出 :
14
对于上面的输出,它计算了 E:\Test、E:\Test\FolderA、E:\Test\FolderB 中的所有文件和文件夹> 和 E:\Test\FolderC,但是如果有更多子目录(文件夹内的文件夹)怎么办?在这种情况下,我们可能必须限制 PowerShell 中递归的级别数。为此,我们可以使用 -Depth
参数。
为了练习 -Depth
参数,我们在 FolderA
中创建另一个名为 FolderD
的文件夹,并在 FolderD
中创建四个文本文件>。现在,执行以下命令对并比较两个结果。
使用 Measure-Object 来计算文件和文件夹的数量:
Write-Host ( Get-ChildItem "E:\Test" -Recurse -Depth 1 | Measure-Object ).Count;
Get-ChildItem "E:\Test" -Recurse -Depth 1
输出 :
15
Directory: E:\Test
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 12/29/2022 9:30 PM FolderA
d----- 12/29/2022 9:13 PM FolderB
d----- 12/29/2022 9:13 PM FolderC
-a---- 12/28/2022 11:33 PM 0 File1.txt
-a---- 12/28/2022 11:33 PM 0 File2.txt
-a---- 12/28/2022 11:33 PM 0 File3.txt
-a---- 12/28/2022 11:33 PM 0 File4.txt
Directory: E:\Test\FolderA
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 12/29/2022 9:21 PM FolderD
-a---- 12/28/2022 11:33 PM 0 File1.txt
-a---- 12/28/2022 11:33 PM 0 File2.txt
-a---- 12/28/2022 11:33 PM 0 File3.txt
-a---- 12/28/2022 11:33 PM 0 File4.txt
Directory: E:\Test\FolderB
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 12/28/2022 11:33 PM 0 File1.txt
-a---- 12/28/2022 11:33 PM 0 File2.txt
Directory: E:\Test\FolderC
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 12/28/2022 11:33 PM 0 File1.txt
和
使用 Measure-Object 来计算文件和文件夹的数量:
Write-Host ( Get-ChildItem "E:\Test" -Recurse -Depth 2 | Measure-Object ).Count;
Get-ChildItem "E:\Test" -Recurse -Depth 2
输出 :
19
Directory: E:\Test
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 12/29/2022 9:30 PM FolderA
d----- 12/29/2022 9:13 PM FolderB
d----- 12/29/2022 9:13 PM FolderC
-a---- 12/28/2022 11:33 PM 0 File1.txt
-a---- 12/28/2022 11:33 PM 0 File2.txt
-a---- 12/28/2022 11:33 PM 0 File3.txt
-a---- 12/28/2022 11:33 PM 0 File4.txt
Directory: E:\Test\FolderA
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 12/29/2022 9:21 PM FolderD
-a---- 12/28/2022 11:33 PM 0 File1.txt
-a---- 12/28/2022 11:33 PM 0 File2.txt
-a---- 12/28/2022 11:33 PM 0 File3.txt
-a---- 12/28/2022 11:33 PM 0 File4.txt
Directory: E:\Test\FolderA\FolderD
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 12/28/2022 11:33 PM 0 File1.txt
-a---- 12/28/2022 11:33 PM 0 File2.txt
-a---- 12/28/2022 11:33 PM 0 File3.txt
-a---- 12/28/2022 11:33 PM 0 File4.txt
Directory: E:\Test\FolderB
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 12/28/2022 11:33 PM 0 File1.txt
-a---- 12/28/2022 11:33 PM 0 File2.txt
Directory: E:\Test\FolderC
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 12/28/2022 11:33 PM 0 File1.txt
看,如果我们有 -Depth 2
,我们只能对 E:\Test\FolderA\FolderD 中的文件进行计数;这就是 -Depth
参数的用途。请记住,Get-ChildItem
cmdlet 不会显示空子目录;如果与 -Recurse
或 -Depth
参数一起使用,则输出中不会包含空目录。
现在,如果我们只想计算文件数怎么办?我们可以使用 -File
参数来做到这一点,如下所示。
使用 Measure-Object 仅对文件进行计数:
Write-Host ( Get-ChildItem "E:\Test" -Recurse -Depth 2 -File| Measure-Object ).Count;
Get-ChildItem "E:\Test" -Recurse -Depth 2
输出 :
15
Directory: E:\Test
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 12/29/2022 9:30 PM FolderA
d----- 12/29/2022 9:13 PM FolderB
d----- 12/29/2022 9:13 PM FolderC
-a---- 12/28/2022 11:33 PM 0 File1.txt
-a---- 12/28/2022 11:33 PM 0 File2.txt
-a---- 12/28/2022 11:33 PM 0 File3.txt
-a---- 12/28/2022 11:33 PM 0 File4.txt
Directory: E:\Test\FolderA
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 12/29/2022 9:21 PM FolderD
-a---- 12/28/2022 11:33 PM 0 File1.txt
-a---- 12/28/2022 11:33 PM 0 File2.txt
-a---- 12/28/2022 11:33 PM 0 File3.txt
-a---- 12/28/2022 11:33 PM 0 File4.txt
Directory: E:\Test\FolderA\FolderD
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 12/28/2022 11:33 PM 0 File1.txt
-a---- 12/28/2022 11:33 PM 0 File2.txt
-a---- 12/28/2022 11:33 PM 0 File3.txt
-a---- 12/28/2022 11:33 PM 0 File4.txt
Directory: E:\Test\FolderB
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 12/28/2022 11:33 PM 0 File1.txt
-a---- 12/28/2022 11:33 PM 0 File2.txt
Directory: E:\Test\FolderC
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 12/28/2022 11:33 PM 0 File1.txt
仅计算 PowerShell 中文件夹内的文件夹数量
使用下面给出的 -Directory
参数仅对目录进行计数。
使用 Measure-Object 仅对文件夹进行计数:
Write-Host ( Get-ChildItem "E:\Test" -Recurse -Depth 2 -Directory| Measure-Object ).Count;
Get-ChildItem "E:\Test" -Recurse -Depth 2
输出 :
4
Directory: E:\Test
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 12/29/2022 9:30 PM FolderA
d----- 12/29/2022 9:13 PM FolderB
d----- 12/29/2022 9:13 PM FolderC
-a---- 12/28/2022 11:33 PM 0 File1.txt
-a---- 12/28/2022 11:33 PM 0 File2.txt
-a---- 12/28/2022 11:33 PM 0 File3.txt
-a---- 12/28/2022 11:33 PM 0 File4.txt
Directory: E:\Test\FolderA
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 12/29/2022 9:21 PM FolderD
-a---- 12/28/2022 11:33 PM 0 File1.txt
-a---- 12/28/2022 11:33 PM 0 File2.txt
-a---- 12/28/2022 11:33 PM 0 File3.txt
-a---- 12/28/2022 11:33 PM 0 File4.txt
Directory: E:\Test\FolderA\FolderD
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 12/28/2022 11:33 PM 0 File1.txt
-a---- 12/28/2022 11:33 PM 0 File2.txt
-a---- 12/28/2022 11:33 PM 0 File3.txt
-a---- 12/28/2022 11:33 PM 0 File4.txt
Directory: E:\Test\FolderB
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 12/28/2022 11:33 PM 0 File1.txt
-a---- 12/28/2022 11:33 PM 0 File2.txt
Directory: E:\Test\FolderC
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 12/28/2022 11:33 PM 0 File1.txt
我们可以使用以下命令来获得更有组织、简短、干净的输出。
使用 Measure-Object 来计算文件和文件夹的数量:
ls -rec | ? {$_.mode -match 'd'} | select FullName,
@{N='Count';E={(ls $_.FullName | measure).Count}}
输出 :
FullName Count
-------- -----
E:\Test\FolderA 5
E:\Test\FolderB 2
E:\Test\FolderC 1
E:\Test\FolderA\FolderD 4
在上面的代码栅栏中,measure
是 Measure-Object
的别名。我们还可以使用ls
命令(用于列出目录内容)如下,仅统计父目录中的文件和文件夹,即E:\Test在我们的例子中。
使用 Measure-Object 来计算文件和文件夹的数量:
write-host (ls "E:\Test").Count
<#we can also write as follows#>
(ls).count
输出 :
7
7
在 PowerShell 中按文件夹扩展名对文件进行计数
要在 PowerShell 中按文件夹中的扩展名对文件进行计数,请将 group Extension -NoElement
与 Get-ChildItem
cmdlet 结合使用。
这是一个例子:
Get-ChildItem -Recurse -File | group Extension -NoElement
输出 :
Count Name
----- ----
11 .txt
这就是如何在 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