web-dev-qa-db-ja.com

False「共有違反」Xcopyエラーメッセージ

(コンピューターAで)バッチスクリプトを実行しています。このスクリプトは、別のコンピューター(コンピューターB)からコンピューターAにいくつかのファイルをコピーします。バッチスクリプトが実行されると、「共有違反」が原因でコンピューターBから独自のディレクトリに一部のファイルをxcopyできないと報告されます。

他のstackoverflowページを読むと、他のプログラムがファイルをロックしている場合に発生することがわかります(他のプログラムが現在ファイルを使用/アクセスしています)。ただし、コンピューターBに移動して、コンピューターAがロックした(共有違反のため)と主張したファイルを削除できます。

私が想像できる唯一のことは、コンピュータAのバッチスクリプトが以前のコマンド中にファイルをロックしていることです(何らかの形で)、この以前のコマンドがファイルをロックしているのですか?ただし、特に指定しない限り、バッチスクリプトコマンドはシリアルで実行されます。

誰も以前にこの問題を抱えたことはありますか?スクリプトは、約1〜2週間前に違反を共有せずに正常にコピーされました。スクリプトに変更は発生していません。

12
Fractal

多くの試行錯誤の後、共有違反が発生した理由を特定することができました

コンピューターBからコンピューターAにファイルをコピーしていました

コンピューターBが[ハードドライブに保存された]ファイルのコピーを作成することを許可していないため、共有違反が発生していると思いました。

実際には、コンピューターA(コピー先のコンピューター)のディレクトリには、上書きできないファイルがありました。これが私が共有違反を受け取っていた理由です。

コンピューターAのディレクトリにあるファイルの1つは、実行されたタスクで、殺されたと思っていました(taskkill)。ただし、この実行可能ファイルはtaskkill(実際には何らかの理由でタスクマネージャーにリストされていなかった)プロセスで見落とされ、このプログラムはまだ実行されていました(ファイルは使用中です)。したがって、ファイルを上書きしようとしたときに、xcopyはこのファイル/実行可能ファイルを上書きするアクセスを拒否され、共有違反が発生しました。

私は、コンピューターB上のファイルがコピーの発生を許可しない場合にのみ、共有違反がxcopy中に発生するという印象を受けました。

27
Fractal

この問題が発生するほとんどの場合、別の実行可能プログラム(exe)が何らかの方法でコピーするファイルを使用しているためです。タスクマネージャを使用してプログラムを強制終了すると、コピーが機能します。

6
Thiago Burgos

バッチファイルでxcopyを使用して同じ問題が発生し、共有違反の原因となっているファイルに読み取り専用属性が設定されていることがわかりました。読み取り専用属性を削除すると、ファイルをコピーできました。

読み取り専用ファイルの上書きを許可するために、xcopyで既に/ Rスイッチを使用していたことに注意してください。また、ファイルが読み取り専用属性が設定された宛先フォルダーに既に存在し、xcopiedが正常に行われた後にターゲットファイルで読み取り専用がリセットされたように見えることも発見しました。これをさらに調査する必要があります。/Kスイッチはこれを防ぐことができます。

また、注目に値するのは、バッチファイルに一連のxcopyステートメントが含まれていたことです。共有違反により最初の行がクラッシュしましたが、バッチファイルは後続のxcopy行まで続行できました。共有違反メッセージが画面からスクロールされたため、エラーはかなり長い間気付かれずに発生していました。エラーが発生した場合でも、/ Cスイッチを使用してコピーを続行することもできます。

これが、この問題にぶつかる他の人の助けになることを願っています。

2
Bob

/Cスイッチは私のために問題を解決しました。 Xcopyは、他のプログラムによって開かれたファイルをスキップして続行しました。

2
Andrej

ファイル/ディレクトリが一時的に利用できなくなったり、別のプロセスによってロックされたりすることがあります。その時点でバッチプログラムがコピーしようとすると、「不明なエラー/共有違反」が発生します。

その場合、「xcopy/copy」の代わりに robocopy を使用すると、すぐに失敗することはありませんが、失敗する前に数回再試行するため、より適切な場合があります。

私にとってこれは、warファイルをTomcatディレクトリにコピーしようとしたときに発生しました。実際にTomcatが停止したことを確認するためにチェックを続けました。問題は、内容を調べていたときに7Zipでwarファイルを開いていたことでした。私は7Zipと問題を閉じたときに閉じました。

明らかなように、これが起こっていたときはそれほどではありません。

1
Pete B.

同じ問題にぶつかりました...問題のあるファイルはExcelシートでした。問題の原因は、コピーしたいファイルが同僚によって開かれたことでした。ステーションから共有フォルダーにデータをコピーしていることに言及しておくと良いでしょう。したがって、xcopyはそれをオーバーライドできません。

"Access denied"がありました。管理者として.BATファイルを実行すると消えました。

ACT!バックグラウンドSQLによってファイルが開かれたままになり、各ファイルに"Sharing violation"メッセージが表示されました。バックグラウンドのSQLプロセスを強制終了し、ファイルを問題なくコピーしました。

ロボコピーが機能するかどうかはわかりません。この時点ではまだXcopyを使用しています。

0
Bardi