
Windowsのプログラムのミスで末尾にドットが付いたフォルダを作成してしまい、そのフォルダが消せなくなった。ネットを調べると結構出てくる。末尾のドットは本来MS-DOSの時代から使用禁止で、普通は”AAA."
とか書いても"AAA"
に変換されてたんだが、プログラム上では誤ってできてしまうことがある。そんなファイルの消し方は、フォルダ名をUNCの書き方で先頭に"\\?\"
をつけてフルパスで書いてやればそのファイルにアクセスできる。UNC記法はWindowsネットワークでのリソースアクセスのため拡張されたパス名の書き方で、そのうちの機能の一つとして先頭に"\\?\"
をつけるとWindows内部のすべての文字列解析を無効にし、それに続く文字列をファイルシステムに直接送信するようにWindows APIに指示するらしい。つまり".."
とかの相対パスとかは使えなくなるけど、よけいなことはしなくなる。例えばそんなフォルダを消すにはコマンドラインから
1 |
rd "\\?\c:\users\hogehoge\Desktop\folder." |
とすることになる。
参考にしたページは、
でした。