私はいくつかのファイル操作のためのPowerShellを使用して、以下のステップを実行している:Powershellのテストパス次いで、別のプロセスによって使用されますがファイル項目を削除
- コピーある場所から別の場所にファイルを(著作アイテム)
- )新しい場所で確認した場合、削除する項目を(元を削除
- (テストパス)ことが期待だ場合、新しいファイルであることを確認し
このプロセスは、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個のファイルです。
ありがとう、ロブ。
スクリプト自体はどこですか?なぜファイルがロックされるのかを検証するには、少なくとも[mcve]を見る必要があります。 – gravity
'Copy-Item'は同期的なので、原因は考えにくいです。ファイルシステムをスキャンするAVやその他のソフトウェア(Googleドライブ/ Dropbox/Skydriveフォルダにある場合はインデクサー、同期ソフトウェア)が可能性が高くなります。あなたがしなければならないことを決めるには、何をロックしているのかを把握しなければなりません。 – briantist