我试图根据每个文件夹中文件数的计数来过滤文件夹。
如果值大于1,我已经能够列出文件夹名称和值。我试图排除可能不包含任何项目的文件夹。
物品的数量每天都在变化。
$Date2 = Get-Date -Format "yyyy-MM-dd"
$Date2Str = '{0:yyyy-MM-dd}' -f $Date2
$startFolder = "U:\test"
#Returns the Count of files in each queue
$colItems = (Get-ChildItem $startFolder -recurse | Where-Object
{$_.PSIsContainer -eq $True} | Sort-Object)
if($colItems -ine $null){
foreach ($i in $colItems)
{
$subFolderItems = (Get-ChildItem $i.FullName | Where-Object
($_.CreationTime -lt $Date2Str -and $_.Name -like "*.tif"))
$i.Name + " -- " -f ($subFolderItems.Count) |Format-Table
@{Expression={$colItems -ge 1}}
我希望$ colItems的输出为subFolder名称,并且为count,但不包括任何Count小于1或等于0的subFolder。
实际返回值是所有子文件夹(包括计数等于0的子文件夹)的子文件夹名称和计数的列表。
答案 0 :(得分:1)
如果您的解释正确,那么您正在寻找类似的东西:
$startFolder = 'U:\test'
Get-ChildItem -Path $startFolder -Directory |
Select-Object -Property Name, @{Name = 'FileCount'; Expression = { (Get-ChildItem -Path $_.FullName -File).count}}
其中列出了$startFolder
的所有子文件夹以及它们的文件计数。
顺便说一句:该代码至少需要Powershell版本3。
...,当然,您现在可以将其通过管道传输到Where-Object
并仅输出其中包含多个文件的文件夹...
Get-ChildItem -Path $startFolder -Directory |
Select-Object -Property Name, @{Name = 'FileCount'; Expression = { (Get-ChildItem -Path $_.FullName -File).count } } |
Where-Object -Property FileCount -GT -Value 1