所以,我在一个文件夹中有一组目录00-99。每个目录都有100个子目录,00-99。每个子目录都有数千个图像。
我正在尝试做的是在计算平均文件大小时基本上获得进度报告,但我无法让它工作。这是我当前的查询:
get-childitem <MyPath> -recurse -filter *.jpeg | Where-Object { Write-Progress "Examining File $($_.Fullname)" true } | measure-object -Property length -Average
这显示了一个条形图,在每个文件被处理时更新,但最后我没有返回平均文件大小数据。显然,我做错了,因为我试图破解Where-Object打印进度声明可能是一个坏主意(tm)。
由于存在数百万个图像,因此该查询显然需要非常长的时间才能工作。如果我理解正确的话,get-childitem几乎是查询时间的主要部分。什么指针得到我想要的? AKA,我的结果理想是:
Starting...
Examining File: \00\00\Sample.jpeg
Examining File: \00\00\Sample2.jpeg
Examining File: \00\00\Sample3.jpeg
Examining File: \00\00\Sample4.jpeg
...
Examining File: \99\99\Sample9999.jpg
Average File Size: 12345678.244567
编辑:我可以做一个简单的选项:
get-childitem <MyPath> -recurse -filter *.jpeg | measure-object -Property length -Average
然后离开我的工作站一天半,或者其他东西,但这似乎有点低效= /
答案 0 :(得分:11)
这样的东西?
get-childitem -recurse -filter *.exe |
%{Write-Host Examining file: $_.fullname; $_} |
measure-object -Property length -Average
答案 1 :(得分:3)
更详细的进展:
$images = get-childitem -recurse -filter *.jpeg $images | % -begin { $i=0 } ` -process { write-progress -activity "Computing average..." -status "Examining File: $image.fullpath ($i of $($images.count))" -percentcomplete ($i/$images.count*100); $i+=1 } ` -end { write-output "Average file size is: $($images | measure-object -Property length -Average)" }