Вопрос о ходе выполнения Powershell Get-ChildItem
Итак, у меня есть набор каталогов 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 в значительной степени будет основной частью времени запроса, если я правильно понимаю вещи. Есть указания, как получить то, что я хочу? АКА, мой результат идеально был бы:
Starting...
Examining File: Sample.jpeg
Examining File: Sample2.jpeg
Examining File: Sample3.jpeg
Examining File: Sample4.jpeg
...
Examining File: Sample9999.jpg
Average File Size: 12345678.244567
Edit: я могу сделать простой вариант из:
get-childitem <MyPath> -recurse -filter *.jpeg | measure-object -Property length -Average
а затем просто уйти от моей рабочей станции на полтора дня или что-то еще, но это кажется немного неэффективным =/
2 ответов
что-то вроде этого?
get-childitem -recurse -filter *.exe |
%{Write-Host Examining file: $_.fullname; $_} |
measure-object -Property length -Average
немного более подробный прогресс:
$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)" }