8.3形式とは
8.3形式とは、
MS-DOSやWindows 3.xまでの環境、およびWindows 95以降のWindowsで用いられる
ファイル名の形式です。最大8文字の
ファイル名と、最大3文字の
拡張子(ドットを除く)で構成されるため、「8.3」という名称で呼ばれています。これは、初期の
ファイルシステムにおける制約によるもので、現在でも互換性のために利用されています。
短いファイル名(Short File Name; SFN)
Windows 95以降、最大255文字までの「長い
ファイル名(Long File Name; LFN)」がサポートされるようになりました。しかし、旧来の
MS-DOSやWindows 3.xなどの環境との互換性を維持するため、各ファイルには自動的に8.3形式の「短い
ファイル名(Short File Name; SFN)」が生成されます。
短い
ファイル名は、長い
ファイル名から以下の規則に従って生成されます。
1.
使用できない文字の除去・置換:
`.`(ドット), `"`, `/`, `\`, `[`, `]`, `:`, `;`, `=`, `,`、スペースなどの文字は削除されます。ただし、拡張子の前の最後のドットは残します。
2. ファイル名の切り詰めと追加:
拡張子を除く
ファイル名が6文字を超える場合、6文字に切り詰められ、`~`(チルダ)と数字(1から9)が付加されます。この処理は、
ファイル名が長すぎる場合だけでなく、使用できない文字の除去や
拡張子の切り詰めなど、長い
ファイル名から変化が生じた場合にも実行されます。ただし、
小文字から
大文字への変換のみの場合は実行されません。
3.
重複時の処理:
切り詰めにより重複が発生した場合、`~`の後の数字が増加します。重複が多い場合の詳細な挙動は環境に依存します。NT系では、5つ目からは`~`の前が変化します。
4. 拡張子の切り詰め:
拡張子は3文字以下に切り詰められます。
5.
大文字への変換:
ファイル名と拡張子の小文字は大文字に変換されます。
例えば、長いファイル名`123456789.txt`の場合、短いファイル名は`123456~1.TXT`となります。もし、この短いファイル名が既に使われている場合は、`123456~2.TXT`のように数字が増えます。短いファイル名は、ディレクトリ内で重複がないように生成されるため、同じ長いファイル名でも異なるディレクトリでは異なる短いファイル名になることがあります。
短いファイル名は、長いファイル名と同様に利用可能です。つまり、長いファイル名でファイルにアクセスするのと、短いファイル名でアクセスするのとは、同じファイルを参照します。これは、長いファイル名に対応していない古いアプリケーションを使用する場合に役立ちます。ただし、短いファイル名は一定ではないため、短いファイル名でのアクセスは環境依存になる可能性があります。例えば、「Program Files」フォルダの短いファイル名が「PROGRA~1」ではない場合もあります。
FATファイルシステムのドライブでは、ディレクトリエントリ内に8.3形式のファイル名を格納するために11バイトの領域が確保されています。ファイル名の長さが8.3形式に満たない場合、ファイル名は左詰めで記録され、余った領域にはスペース(0x20)が詰められます。拡張子は必ず末尾3バイトを使用し、必要ならば拡張子の前にスペースが詰められます。例えば、「1234.TX」は「1234␣␣␣␣TX␣」として記録されます(「␣」はスペースを表します)。拡張子の前のドットはディスク上には記録されず、8バイト目と9バイト目の間にソフトウェア的に挿入されます。ただし、カレントディレクトリを表す「.」と親ディレクトリを表す「..」はそのままディスク上に記録されます。日本語環境では、文字コードはCP932が使用されますが、ファイル名が0xE5で始まるエントリは「削除済みファイル」を表すため、ファイル名が0xE5で始まる場合は0x05に置き換えられます。
使用できない文字
短いファイル名には、長いファイル名に使えない文字に加えて、さらにいくつかの文字が使用できません。
長いファイル名にも使えない文字: `"`, `
`, `?`, `/`, `\`, `:`, `<`, `>`, `|`
長いファイル名には使えるが、短いファイル名に使えない文字:
スペース、`;`, `=`, `,`, `[`, `]`
`.`(ドット)は、短い
ファイル名では
拡張子の前に1回のみ使用できます。日本語環境では、CP932のバイト列の中に使用できない半角文字を含む全角文字は使用できます(ただし、アプリケーションが対応していない場合があります)。