循环/循环遍历子目录并确定每个子目录中的文件计数

时间:2015-12-07 06:32:11

标签: loops powershell powershell-v3.0 subdirectory

我有目录E:\NugetRoot\NugetServer,我需要遍历此路径上的子目录,并在该子目录中的packages文件夹中,我需要计算以.nupkg结尾的文件并将它们输出到cvs文件名为d:\monitoring\NugetStatistics,每次运行脚本时,都应附加到文件中。

  1. 为每个文件夹计算.nupkg中以"C:\NugetRoot\NugetServer\\**\Packages"结尾的文件。 (我需要遍历**文件夹并计算以.nupkg结尾的每个文件)
  2. cvs文件中输出两列:一列显示“**”文件夹名称&另一个显示文件计数。

3 个答案:

答案 0 :(得分:1)

首先使用带有recurse标志的Get-Childitem查找所有dnx web 文件以获取子文件夹中的所有文件,然后使用正则表达式过滤结果以排除最终文件夹未被称为包的任何位置。然后使用另一个正则表达式提取以前的文件夹名称,将其输入到Group-Object中以获取计数,然后输入包含append标志的Export-Csv。

*.nupkg

答案 1 :(得分:0)

cd "C:\NugetRoot\NugetServer\\**\Packages"    
$a = Get-ChildItem -Name

foreach ($i in $a) {    
    $b = (Get-ChildItem -Recurse -Force -Include .nupkg  -Path $i | Select-Object -ExpandProperty Name).Count
    $i + "`t" + $b    
}

答案 2 :(得分:0)

这是我到目前为止所拥有的。它显示服务器名称,ProjectgroupID(或文件夹名称),但获取包计数错误。此外,我也无法获得平均文件大小,我评论了这些:

$folders = gci C:\NuGetRoot\NugetServer -Directory
foreach($folder in $folders){
    @{ServerName=$env:COMPUTERNAME;
        ProjectGroupID = $folder.Name;
        NuGetPackageCount = (gci $folder.FullName\packages -Include '*.nupkg') | %{$_.Size}.Count;
        #AverageSize= Measure-Object (listof sizes) -Average

    } #| Export-Csv -Path c:\temp -NoTypeInformation -Append

}
Measure-Object -Average
相关问题