2016-07-14 6 views
0

私はいくつかのファイル操作のためのPowerShellを使用して、以下のステップを実行している:Powershellのテストパス次いで、別のプロセスによって使用されますがファイル項目を削除

  1. コピーある場所から別の場所にファイルを(著作アイテム)
  2. )新しい場所で確認した場合、削除する項目を(元を削除
  3. (テストパス)ことが期待だ場合、新しいファイルであることを確認し

このプロセスは、99.9%の作品時間しかしsometi mes元のファイルが既に使用中/ロックされていることを通知する削除項目の手順が発生すると、エラーが発生します。私はこれを使用するプロセスがステップ1または2のコピー項目/テストパスであると仮定することができます。

コピーアイテム/テストパスが終了するまで待ってから先に進む必要がありますアイテムを削除しますか?または、この問題を引き起こしているアクセスAVなどの別のプロセスが実行されている可能性は高くなりますか?もしそうなら、ファイルロックが行われた場合に簡単に再試行する方法はありますか?ここ

は、上述のステップを実行するコードの一部である:

if ($copySuccess = "TRUE") { 
    $wiFiles = Get-ChildItem $xmlDir -Filter $itemNum*.* 
    $wiFiles | ForEach-Object { 
     if ($copySuccess -eq "TRUE") { 
      Copy-Item -LiteralPath $xmlDir\$_ -Destination $processedDir 
       if (!(Test-Path -LiteralPath $processedDir\$_)) { 
        $copySuccess = "FALSE" 
       } 
      } 
     } 
    }      
    if ($copySuccess -eq "TRUE") { 
     Get-ChildItem $xmlDir -Filter $itemNum*.* | Remove-Item 
    } 

ファイルが移動される小さなテキストファイルや画像ファイル< 1メガバイトを、典型的に< itemNum当たり10個のファイルです。

ありがとう、ロブ。

+0

スクリプト自体はどこですか?なぜファイルがロックされるのかを検証するには、少なくとも[mcve]を見る必要があります。 – gravity

+1

'Copy-Item'は同期的なので、原因は考えにくいです。ファイルシステムをスキャンするAVやその他のソフトウェア(Googleドライブ/ Dropbox/Skydriveフォルダにある場合はインデクサー、同期ソフトウェア)が可能性が高くなります。あなたがしなければならないことを決めるには、何をロックしているのかを把握しなければなりません。 – briantist

答えて

0

コマンドレットで問題が発生する可能性はほとんどありません。あなたが確認する場合は、次の始まる前に、各コマンドレットが終了すると、あなたがもちろん

While (Test-Path($yourFileDir)){ 
    Try{ 
     remove-item [your item] -ErrorAction Stop 
    }catch{ 
     Write-Verbose "File locked, trying again in 5" 
     Start-Sleep -seconds 5 
    } 
} 

の線に沿って何かを試みることができるdeleteコマンドについて

$job1 = Start-Job { [Powershell code] } 
Wait-Job $job1 

で各コマンドをラップし、あなたはこれを整理することができますあなたのニーズに合わせて適切なタイムアウトを追加してください。

+0

フラッシュ、そのコードは法案にうまく収まるように見える!試して更新します。乾杯、ロブ。 –

+0

@RobBerry、どうしたの?仕事を仕事として実行して問題を解決したか、またはwhileステートメントを実行したか、または両方を必要としましたか?私はすぐに似たようなことをしているかもしれませんし、あなたがどのように乗っているか知りたいです。 –

+0

こんにちは、フラッシュ、私は以前の簡単なテストを持っていたが、アイテムを取り除くとエラーが発生した後にキャッチがトリガーされなかったので問題が発生しました。明日のテストをする必要がありますが、あなたにお知らせします。 Rgds、Rob。 –

関連する問題