プロセス違反でディレクトリ削除失敗No.02985
白雲斎 さん 02/02/04 01:11
 
 白雲斎 と申します。

あるマクロの一部機能として、バッチコマンドを呼び出し(厳密には、Perlを
経由している)、ディレクトリを削除するというものがあります。
ところが、ある条件(100%ではない)では、削除に失敗してしまうのですが、
こう言う物なのでしょうか。

【状況】
    (1) 常駐以外の秀丸が無い状態で、削除対象のディレクトリ"DirA"にある
        ファイル"FileB"を、秀丸で開く。
    (2) "FileB"から新規秀丸を開き、"FileB"を閉じる。(新規秀丸で編集は
        なし)
    (3) 削除機能を有するマクロを、ディレクトリ"DirA"を指定して実行する。
    (4) 削除失敗となる。
    (5) 常駐を含め、すべての秀丸を終了し、新規秀丸を新たに開く。
    (6) (5)の秀丸上でも、削除は失敗となる。

一度、他のディレクトリにあるファイルを開き、そこからマクロを実行すると、
正常に動作(削除)します。

------------ delete.bat ------------
@echo off
chdir /d %1 || goto end
rmdir /s /q %2
if exist %~s2\nul (
    del /f /s /q %2
    rmdir /s /q %2
)
:end
------------------------------------

windows 2000sp2
秀丸 ver.3.13

削除対象のディレクトリに、システムファイルや、読み取り等の属性ファイル
はありません。

[ ]
RE:02985 プロセス違反でディレクトリ削除No.02986
白雲斎 さん 02/02/04 13:26
 
 白雲斎 と申します。

[02985]の追記です。

バッチコマンドを実行するまでもなく、手作業の削除でも、共有違反で削除で
きませんでした。

また、他のディレクトリにあるファイルを開くまでも無く、新規秀丸を
"changename"で名前変更すれば削除に成功します。
と言う事は、この現象は正常動作で、仕方が無いものなんでしょうか。

[ ]
RE:02986 プロセス違反でディレクトリ削除No.02987
FKU さん 02/02/04 13:54
 
FKUです。

> バッチコマンドを実行するまでもなく、手作業の削除でも、共有違反で削除で
> きませんでした。

当方もWin2000ですが、共有違反によってファイル(ディレクトリも)の削除が
出来なくなることは、珍しくありません。(2回/3日程度発生)
この場合PCを再起動することにより、共有違反が発生しなくなるはずです。

理由は調べてないので知りませんが、余り気にしていません。

試しに再起動して見て下さい。

もし、話の観点がずれていたら申し訳御座いません。

[ ]
RE:02985 プロセス違反でディレクトリ削除No.02988
秀丸担当 さん 02/02/04 16:07
 
>あるマクロの一部機能として、バッチコマンドを呼び出し(厳密には、Perlを
>経由している)、ディレクトリを削除するというものがあります。
>ところが、ある条件(100%ではない)では、削除に失敗してしまうのですが、
>こう言う物なのでしょうか。

この手順であれば、新規秀丸のカレントフォルダが"DirA"になっているので、
フォルダが削除できないのは正しい動作です。
Windows95系では削除できてしまいますが、Windows2000ではできません。
これを回避するには、違うフォルダのファイルを開くか、言われているように
changenameしてカレントフォルダを移動するしかないです。

[ ]
RE:02988 プロセス違反でディレクトリ削除No.02989
白雲斎 さん 02/02/04 18:46
 
 白雲斎 と申します。

>Windows95系では削除できてしまいますが、Windows2000ではできません。

納得しました。ありがとうございます。

[ ]