0

最初に数百のフォルダーとファイルを作成してから、powershell を介してコピーする必要があります (最初にローカル ストアで作成し、次にリモート ストアにコピーします)。ただし、 foreach ループが実行されると、ファイル/フォルダーをブロックする「別のプロセス」が原因で、約40回の書き込み試行ごとに失敗します。私は現在、すべてのファイル作成の間に単純なスリープ (100ms) を使用して問題を修正しました。しかし、これを行うより良い方法はないのだろうか?特に複数のファイルをコピーする場合、スリープはネットワークの遅延に依存し、私にとっては良い解決策ではないようです。

別の操作を開始する前に、ファイルの書き込み操作が完了するまで「待機」する方法はありますか? または、ファイルがまだ 1 つのプロセスによってブロックされているかどうかを確認し、再び解放されるまで待ちますか?

4

1 に答える 1

0

コードをジョブとして実行してみましたか? 例:

foreach ($file in $files) {
    $job = Start-Job -ScriptBlock {
     #operation here..
    } | Wait-Job
    #Log result of job using ex. $job and:  '$job | Receive-Job'   to get output
}

拡張して複数のジョブを作成Get-Job | Wait-Jobし、すべてが完了するまで待機してから続行することもできます。

于 2012-12-16T22:18:16.480 に答える