以前、あるツールのフォルダを上書きコピーするバッチ処理が、特定のユーザにだと正常に動作しないという現象があった。調査してみたところ原因はフォルダ内にあるEXCELアドインファイルだった。
そのバッチ処理はコピー以外の処理も必要だったため、batファイルからフォルダコピー処理が書かれたVBScriptファイルを呼ぶ形式になっていた。
調査のため、そのbatファイルにpauseを入れて実行してみると「ファイルコピー時にエラーが発生しました。エラー番号:70 エラー詳細:書き込みできません。」といったエラーが表示されていた。
ネットで同様のエラーがないか調べてみたところ、読み取り専用のファイルがコピー先にあるとエラーが発生するという情報があり、ファイルの属性を調べるコマンドを実行してみたところ、EXCELアドインファイルの一時ファイルがあることが分かった。
ちなみに、ファイルの属性を調べるコマンドは
“attrib /S”(/S:サブフォルダ含む)を使用。
(ちなみにattribコマンドはファイル属性の設定も出来るらしい)
EXCELを起動しているとアドインの一時ファイルが出来てしまう(attribコマンド結果一行目)ので上書きコピーに失敗してしまうことが分かり、アドインファイルの場所を変更することで事なきを得た。
ちなみに、試しにVBScriptでなくbatファイル内に直接xcopyを入れて実行してみたら”共有違反です”というエラーメッセージとともにアドインファイル名が表示されたのでもう少し早く原因が分かったかもしれない。
EXCELアドイン以外にも一時ファイルが作られるソフトウェアはあると思うので、フォルダの上書きコピーが失敗する場合は、一度フォルダ内のファイルの属性を調べてみると良いと思う。