長いパスにできたファイルの削除
WinRARでフォルダの上に圧縮解除したら、やたら長いパスが構築された。
これを削除しようと思ったら、削除できない。
- エクスプローラの右クリックでプロパティを見ようとしてもアクセスできない。
- DOSプロンプトから削除しようとしてもできない。
- Explorerを落としたり、マシンを再起動しても削除できない
- スキャンディスクかけても削除できない。
…しかたないので、C++で
DeleteFile( "\\\\?\\X:\\xxxx\\xxxx......." );
としてみたが、やはりできない。
よくよくMSDNを読むと、Unicodeバージョンならば、という記述があるため、
DeleteFileW( L"\\\\?\\X:\\xxxx\\xxxx......." );
に変更して試したところ、ようやく消える。
WinRARは、おそらくUnicodeバージョンを使ってファイルを展開しているのだろうな、などと想像。しかし、エクスプローラが、これを使っていないというのが非常に意外だった。