ヘンな名前のファイルが削除出来なくて困ったら。

 超絶今更っちゃ今更ネタなのだが、ちょっとドツボってる場面を見かけたので。

 WindowsのFileSystemAPIはまぁ実に実装がテキトーというか何というかなので、普通にエクスプローラやコマンドプロンプトからは扱えないファイル名のファイルも簡単に作れてしまう。
 まぁそれ自体は兎も角として、世間にはアンインストールしてもそういうファイルを残していくとか、挙げ句テンポラリファイルとしてそういうNGファイル名を使ってる為に、何かの拍子でテンポラリファイルが残ってしまうとアンインストールがエラーになるというヘボ実装のアプリが存在するのであり。

 で、そんなファイルを削除する方法。意外と知られていないらしいので、メモ代わりに書いておく。

 DOS窓を開いて「del ”¥¥?¥ドライブレター:¥フルパス¥ファイル名”」

 ※勿論「¥」は半角で。blogで半角にすると「\」に文字が化けてしまうので。

 ポイントは「¥¥?¥」の部分。
 これはWindowsが持つ特殊パスの一つで、通常使われるpath名展開・正規化エンジンをバイパスするもの。
 なので、通常は正規化されてしまい手が出せなくなるヘンなファイル名やフォルダ名も指定出来るようになる。

 逆に言うと、カレントパスを示す「.¥」等の特殊表記、パス記述での区切り記号(¥)の重複や代替区切り文字の使用(/)等は全てこの正規化エンジンが展開しているので、この指定方法を使うと全てNGになる。

 #なので、スクリプト等で厳密にパス名を検査したい場合に使ったり。

 ちなみに当方が見かけたのはCygwinをテキトーに入れてテキトーに削除しようとしてドツボってた場面。
 「REAME.」(←このファイル名の最後の「.」が問題)なるファイルが残ってしまい、エクスプローラから削除出来なくなる模様。

Share