約 10 万の .doc ファイルをロードするための次のスクリプトを取得し、それらに対してプログラムを実行しました。出力に基づいて、ファイルはフォルダーにグループ化されます。ファイルが少ないローカル ディレクトリでスクリプトをテストしたところ、期待どおりに動作しました。
しかし、ファイルの大規模なコーパスからロードする場合、スクリプトは「Loading Files....」を出力し、そこにとどまります。スクリプトは、コーパスからすべてのファイルをロードするまで待機しているようです。この場合、一度に 1 つのファイルを読み込んで処理する方法はありますか?
効率面についてもコメントいただければ幸いです。
$path = "\\Storage\100kCorpus"
$filter = "*.doc"
$count = 0
Write-Host "Loading files....";
$files = @(get-childitem -recurse -path $path -filter $filter)
Write-Host "files loaded";
foreach ($file in $files) {
$count ++
Write-Host "$file.FullName";
$out = & "D:\Test\doc\Verify.exe" /i:$file.FullName
$failed_file_location="D:\Test\doc\2875555\$out";
if (($out -ne "passed") -and !(Test-Path -path $failed_file_location )){
[IO.Directory]::CreateDirectory($failed_file_location)
Copy-Item $file $failed_file_location
}
}
Write-Host "There are $count files with the pattern $filer in folder $path"