NTFSで消せないファイルを消す

NTFSで消せないファイルを消す

 自分はいつもrobocopy(robocopyとは – はてなキーワード)を使ってファイルのバックアップをとっています。ですがあるときに変なフォルダ構造でバックアップがとれてしまい、それが消せないファイル&フォルダとなって残ってしまっていました。

 その時使用していたコマンドは以下の通り


robocopy c:\Users "F:\Emergen" /MIR /R:1 /W:1 /XF *.tmp /XD "Application Data"

 特定配下の要らないファイルやロックされているファイルをパスしつつ、ミラーリングを行う指定です。/MIR楽なんだけどねぇ。その際シンボリックリンクか何かのループに陥ったのでしょう。こんなフォルダができてました。

20090114-1.JPG

 DOSでいじろうとするとこんな感じ。

F:\Emergen\xxxxxxx\AppData\Local\Application Data\Application Data\Application
Data\Application Data\Application Data\Application Data\Application Data\Applica
tion Data\Application Data\Application Data\Application Data\Application Data\Ap
plication Data>cd “Application Data”
ファイル名または拡張子が長すぎます。

 F:\Emergenを削除しようとするも、「ファイル名が長すぎます」と言われて削除できない。どんどん潜っていって削除しようとしても、ファイルへの絶対パスが長すぎるのか変わらず。DOSでdel *.* /s /f /qとかやってもダメ。
 実際はファイル名が長すぎる訳ではなく、パスが長すぎるんでしょう。
そこで探してみるとマイクロソフトに解決策が出ていました

NTFS ファイル システム上のファイルまたはフォルダを削除できない


原因 4 : ファイル パスの長さが MAX_PATH の文字制限を超えている
ファイル パスに問題があると、ファイルの表示、編集、または削除を行うことができない場合があります。
・・・
解決方法 4 : フォルダと同じ深さのネットワーク共有を使用する
「解決方法 1」、「解決方法 2」、または「解決方法 3」では不都合な場合、またはこれらの方法で問題が解決されない場合には、フォルダ ツリーのできるだけ深い場所にネットワーク共有を作成し、その共有にアクセスして、フォルダの名前を変更します。

 なるほど!そんな方法がw
一番最下層のApplication Dataを共有し、そのフォルダ内で操作する事で無事消せました。共有フォルダは指定されたフォルダの実パス名は見てないんですね。

 本来はこういったフォルダができること自体がロックされているべきなんですけどね。

コメントを残す