Unity仙人 @lucifugesフォルダの末尾に「.」 を付けると扱いが難しいことや、「\\?\」という記法は知りませんでした。
https://twitter.com/lucifuges/status/863726956293922816
Win10でフォルダ名の末尾に「.」が付いてるとエクスプローラからはおろかコマンドプロンプトからも普通には削除できなくなるという21世紀にあるまじきクソ仕様を踏んで半べそかいてた。解決法はパス指定の前に\\?\とかいう謎記号を付けること。rd "\\?\C:\dir."みたいな。
こちらに対して以下のような情報が提供されていました。
tomokisanaki @tomoki0sanakiリンク先の該当する記述を以下に引用します。
https://twitter.com/tomoki0sanaki/status/863911178023477248
"5.パス名の末尾の「.」や半角スペースが無視されない" ですねー。 → 「IPA ISEC セキュアプログラミング講座 ver1 8.1 Windowsパス名の落とし穴 http://www.ipa.go.jp/security/awareness/vendor/programmingv1/b08_01.html …」の「サービス機能の不活性化」
Windowsパス名の落とし穴
http://www.ipa.go.jp/security/awareness/vendor/programmingv1/b08_01.html
サービス機能の不活性化
多くの自由度を持つWin32のパス名を相手にするには複雑なロジックのプログラムが必要になるが,パス名の解釈に伴う「サービス機能」の多くを不活性化する特殊な指定方法がある。それはパス名の先頭に「\\?\」という4文字を付け加えることである。たとえば,pfile = fopen ("d:\\dir\\data.txt", "r");の代わりに
pfile = fopen ("\\\\?\\d:\\dir\\data.txt", "r");
のようにするのである。知りませんでした。何かあったときはこのメモを見ることにします
「\\?\」から始まるパス名についてはサービス機能が次のようにはたらかなくなる。
- ディレクトリ区切り文字「/」が使用できない。
- ディレクトリ区切り文字の重複「\\」(C/C++の文字列定数内では"\\\\")が許されない。
- パス名の途中に「\.\」を差し挟めない。
- パス名の途中に「\..\」を差し挟めない。
- パス名の末尾の「.」や半角スペースが無視されない。