1. ホーム
  2. windows

[解決済み] Xcopyのエラーメッセージ「Sharing Violation」が誤っている。

2022-01-29 18:40:35

質問

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

他のスタックオーバーフローのページを読むと、これは他のプログラムがファイルをロックしている(他のプログラムが現在そのファイルを使用/アクセスしている)ときに起こることがわかります。 しかし、私はコンピューターBに行き、コンピューターAがロックされていると主張するファイルを削除することができます(共有違反のため)。

唯一想像できるのは、コンピュータAのバッチスクリプトが、以前のコマンドでファイルをロックしており、この以前のコマンドがファイルをロックしているということでしょうか。 しかし、バッチスクリプトのコマンドは、特に指定がない限り、シリアルに実行されると思うのですが。

以前、このような問題が発生したことがある方はいらっしゃいますか? 1~2週間ほど前にスクリプトは共有違反もなく正常にコピーできていました。 スクリプトには何の変更もありません。

解決方法は?

試行錯誤の結果、共有違反が発生する原因を突き止めることができました。

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

コンピュータBが、(ハードディスクに保存されている)これらのファイルのコピーを許可していないため、共有違反が発生していると思いました。

実は、パソコンA(コピー先)のディレクトリには、書き込めないファイルがあったのです。 そのため、共有違反が発生していたのです。

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

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