Windows 7でフォルダーに「._。」という名前を付けることができないのはなぜですか?


74

フォルダーに名前を付けることはできないことに気付いた._.- ._代わりに名前が付けられます。時々、名前を付けるとすぐに消えてしまいますが、ビューを更新すると再び表示されます。Windowsには、ファイル名の末尾にドットの問題があるようです-これはなぜですか?


21
注目に値するのは、Windowsでファイル名を開始するための「ハック」を見つけたことです.
jpmc26

8
@ThisNameBetterBeAvailable未テストですが、動作cd -- -_-する可能性があります。これ--は一般的な「オプションの終わり」マーカーです。
TripeHound

13
@ThisNameBetterBeAvailableいいえ、--それ自体は「これがオプションの終わりです-。で始まるすべてをリテラル値として扱いますという意味です。ただ、テスト:mkdir -- -_-cd -- -_-私は期待通りに動作します。
トライプハウンド

2
あるいは、./-_-同様に動作するはずです。
glglgl

5
@Alexander Linuxでは、コメントの送信先のように見えるためcd "-_-"、シェルはグループ化に引用符を使用しますが、引数の一部としてそれらを扱いません。エラーがありますinvalid option
イズカタ

回答:


123

Windowsでは、通常、ファイルに拡張子がないか、少なくとも1文字の拡張子がある必要があります。長さゼロの拡張子、つまりで終わるファイル名ではクールではありません.。フォルダーにも拡張子を付けることができます。そのため、Windowsでは、名前の末尾をにすることはできません.。ソース、DavidPostillがリンクた記事から:

ディレクトリまたはファイルの名前の拡張子からベースファイル名を区切るには、ピリオドを使用します

(Emphasis mine。)ピリオドで名前が付けられたファイルまたはディレクトリを終了しようとするとmd、コマンドプロンプトで作成した場合でも、Windowsは拡張子が不要であると見なし、削除します。

危険区域!フォルダー名をで終わらせたい場合.は、魔法の生の名前オーバーライドシーケンスを使用する必要があります\\?\。コマンドプロンプトでmd \\?\C:\path\to\container\._.は、実際にという名前のフォルダーが作成されますが._.、エクスプローラーでも多くのプログラムで問題が発生します。

._。 問題点

このようなディレクトリはrd\\?\名前の後にのみ削除するか、短いdir /x名前(8.3、)で名前を変更できます。


1
詳細な回答ありがとうございます!:)最初に名前を変更した場合にのみフォルダを開くことができ、誰もが名前を変更する方法を知っているわけではないため、これはその中にパスワードなどの秘密のものを隠す完璧なフォルダになると思います。
ブラック

19
@EdwardBlackは、スタック交換を読み取ることができる人を止めることはありません(したがって、仮想の弟に対するセキュリティを提供することさえしません)。によって与えられた名前dir /xは非常に簡単になり、この名前が便利な場合もあります。
クリスH

11
CygwinのコマンドラインツールであるFWIWは、マジックシーケンスを使用せずに、Windows 7でそのようなディレクトリを作成(および操​​作)することもできます。
スティーブジェソップ

4
@EdwardBlackクリスHが言ったように、それはあまり秘密ではないので、そのようなフォルダに特に重要なものを保存すべきではありません。さらに、デジタルの機密性と保護は、何度も解決されてきた問題です。任意の数の暗号化方法とプログラムを使用して、あいまいなフォルダー名に依存せずに安全に保管できます。
クリスハーパー

3
Nitpick:少なくとも8.3日間(NTFSでディスクに書き込まれたものを調査していません)、そもそもディスクに期間が書き込まれたことはありませんでした。名前は名前と拡張子に分割され、別々に保存されました。読むと、名前を取得し、拡張子があった場合は、名前にピリオドと拡張子を追加しました。したがって、._を表現する方法はありませんでした。もちろん、ディレクトリ構造では、末尾のドットを失いました。
ローレンペクテル

22

Windowsには、ファイル名の最後のドットに問題があるようです。どうしてこれなの?

ファイルまたはディレクトリ名の末尾にスペースまたはピリオドを使用しないでください。基礎となるファイルシステムはそのような名前をサポートしている場合がありますが、Windowsシェルとユーザーインターフェイスはサポートしていません。

以下のソースリンクでは、命名規則について詳しく説明しています。

ソース命名ファイル、パス、および名前空間


5
これはまだバグのように聞こえます。
ラル

@raluそれがバグである場合、MSはそれを修正することに全く興味がないように見えます。これらの制限は、Windows XP以降(以前ではない場合)に存在していました。
DavidPostill

Windows XP?...問題をクリアするためにゲイツ氏に尋ねてみましょう-私の推測では、これらの制限は、MS-DOSの0.xの中に自分たちのルーツを持っていることである
クリスチャン・セヴェリン

17

これはバグではありません。互換性の問題を防ぐために設計されています。
これは、古いDOS時代の残り物です。

FAT12(フロッピー)およびFAT16ファイルシステム(Windows 95で導入された長いファイル名サポートの前のFAT16)には、11バイトで保存されたファイル名しかありませんでした
。名前と拡張子の間の「ピリオド」は保存されませんでした。暗黙的に表示され、表示目的で自動的に追加されました。
ディレクトリには拡張機能がまったくありませんでした。代わりに、拡張子の3バイトは「$」文字で埋められました(実際の名前では違法でした)。
Windowsは引き続きこのエクスプローラーと互換性があり、Windowsの他の多くのコンポーネントは、互換性の問題の発生を防ぐために、末尾のピリオドを静かに非表示にします。
他の人が述べたように、RAWセマンティクス(絶対パス名の前の\\?\プレフィックス)を使用して、実際にそのようなフォルダーを処理できます。
舞台裏では、NTFSとネットワークファイルシステムは、このようなファイルやフォルダーには問題ありません。これは、他のソフトウェアに問題を引き起こす可能性のある何かをユーザーが作成できないようにするExplorerの事例です。

(実際には、他にもいくつかの
残り物があります:COM、COM1、COM2、AUX、PRN、LPT、LPT1、LPT2、LPT3、CONなどのファイル名は、エクスプローラーや他の多くのWindowsパーツがすべて混乱する同様の問題を引き起こす可能性がありますこれらの名前は「予約済み」の名前であり、DOS時代から遡ります。)


3
ドットが保存されていないことに関して最初は信じられなかった他の読者にとって、それはCP / MおよびFAT16およびFAT32を含むすべてのバージョンのFATに当てはまります
ベンN

1
Cのfoo.bar:私は何とかという名前のファイルを作成するために管理することにより、一度私に本当の悲しみを与えて(おそらく直接INT13関数を使用して、実際のDOS上で実行されている)いくつかの古いDOSプログラムを覚えて...ドライブを
rackandboneman

2
@BenN:実際、FAT32では少し異なります。短いファイル名(「暗黙的なドット」後方互換名を持つ8 + 3バイト)と、明示的なドットを持つ最大255 UCS-2文字で構成される長いファイル名(LFNと呼ばれることが多い)の両方を格納します。 16ビットアプリケーションを使用している場合は、常にLFNを使用します。
マッテオイタリア

1
@MatteoItalia長いファイル名が偽のファイルエントリに保持されることは私の理解です。既知のWindowsインストールはこれらのエントリを探し、可能であればSFNの代わりにそれらをレンダリングします。この件に関するRaymond Chenの投稿、または上記でリンクしたFAT32形式仕様のVFAT部分を参照してください。
ベンN

1
-1ディレクトリの拡張子が間違っています。多分それはCP / Mに当てはまりました(私の記憶はそのOSについてくだらないです)が、DOS時代から私のツリーで「programm.ing」ディレクトリを使用しており、win.tue.nl /〜aeb / linux /を参照してくださいfs / fat / fat-1.html-ディレクトリエントリはファイルとまったく同じように処理されます。8.3形式の名前を持つこともできます。テスト:8.3ディレクトリを作成し(mkdir testfile.name)、WindowsでそのDOS名を表示します(dir /x)- TESTFI~1.NAM期待どおりに表示されます。
vaxquis

3

ここでの問題は、Windows(DOS)がFATファイルシステムで8.3ファイル名を許可していることです。意味、8文字、その後に。3文字が続きます。UnixおよびLinuxでは、/および\ 0を除くすべての文字を使用できます。\ 0はC文字列ターミネータで、/はディレクトリ区切り文字です。他のすべてを使用できます。

Windows 95は、短い(8.3)ファイル名から長いファイル名(LFN)メタデータのデータベースを維持することで、この問題を回避しました。Windows 95 OSファイルをワイプした場合、次のWindows 95インストールで、奇妙な名前のファイルがディスクに残されます。たとえば、「My Documents」には、ディスク上のMYDOCU〜1という名前を付けることができます。明らかに、メタデータを失った場合、これらを簡単に変換することはできません。

シェルは、MS-DOSの時代から存在する多くの歴史的な増加に対処する必要があります。

お役に立てれば


1
データベース自体は実際にはありませんでした。Windowsは、長いファイル名の一部を偽ファイルとしてディスクにジャムしました。この件に関するレイモンドチェンの投稿を参照してください。
ベンN
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.