8

したがって、フォルダ内にディレクトリ 00 ~ 99 のセットがあります。これらの各ディレクトリには、00 から 99 までの 100 個のサブディレクトリがあります。これらの各サブディレクトリには、何千もの画像があります。

私がやろうとしているのは、基本的に、平均ファイルサイズを計算している間に進行状況レポートを取得することですが、それを機能させることはできません. これが私の現在のクエリです:

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

そして、ワークステーションから 1 日半かそこら離れるだけですが、それは少し効率が悪いようです =/

4

2 に答える 2

12

このようなもの?

get-childitem -recurse -filter *.exe | 
      %{Write-Host Examining file: $_.fullname; $_} | 
      measure-object -Property length -Average
于 2011-05-02T21:12:55.033 に答える
5

もう少し詳細な進捗状況:

$images = get-childitem -recurse -filter *.jpeg

$イメージ | % -begin { $i=0 } `
-process { write-progress -activity "Computing average..." -status "検査中のファイル: $image.fullpath ($i of $($images.count))" -percentcomplete ($i/$images.count*100 ); $i+=1 } `
-end { write-output "平均ファイル サイズ: $($images | measure-object -Property length -Average)" }
于 2011-05-02T21:44:31.277 に答える