如何使用 powershell 计算文件夹下的文件数和文件夹数,模拟该文件夹的 Windows“属性”?
(get-childitem -recurse).count
返回对象总数(文件夹和文件总数),以及
(gci -rec | where { $_.PSIsContainer }).count
返回文件夹的数量。但是有没有办法在单个命令中同时计算文件夹和文件的数量,而无需遍历文件系统两次?我认为可以使用命名变量和循环编写过程化 powershell 代码,但这似乎不是正常的使用方式。
关于相关话题,http://technet.microsoft.com/en-us/library/ee692796.aspx描述了两种获取文件名列表的方法:
Get-ChildItem C:\Scripts | Select-Object Name
和
Get-ChildItem C:\Scripts -name
作者声称它们是等效的,但使用 -recurse 时,第一个只返回文件名,而第二个返回完整路径。有没有办法让 Select-Object 返回完整路径,以便这两个命令生成相同的输出?(随机尝试产生Select-Object Path
空白行,而不是路径。)
gci -rec -name
gci -rec | Select-Object xxx?
答案1
您可以在遍历文件时获取每个项目的类型,然后使用group-object
命令行获取每种类型的数量:
dir -rec | %{$_.GetType()} | group-object name | select name,count
Name Count
---- -----
DirectoryInfo 15
FileInfo 26
要回答您的第二个问题,只需选择属性FullName
:
Get-ChildItem C:\Scripts | Select-Object FullName