• 締切済み

VFATとFATについて

WindowsXPにおいて、下記フォルダを作成した場合のディレクトリエントリについて教えていただきたいと思います。 フォルダ名 C:\雷 上記フォルダを作成し、記憶領域のディレクトリエントリを参照してみると、ファイル名(拡張子含む)が11文字以下であってもVFATのフォーマットでファイル名がunicodeに変換されてディレクトリエントリが作られています。 文字コードが0x80以上ならば、11文字以下でもあってもVFATで作成されるのだと考えていました。 しかし、同時に作成されるショートファイルネームのディレクトリを参照すると、ショートファイルネームには”雷”のS-JISコードが記憶され、VFAT時のショートファイルネームの特徴である先頭6文字に”~"と番号を追加した形になっていません。 これでは8.3形式のディレクトリエントリ、VFATのディレクトリエントリのどちらにも該当しません。 ウィンドウズの動作仕様として、上記のような動作が正しいのでしょうか? 長文で申し訳ありませんが、何卒、回答の程宜しくお願い致します。

みんなの回答

  • Toshi0230
  • ベストアンサー率51% (836/1635)
回答No.5

> 8.3形式に納まっているファイル名のときは「短いファイル名」は付けないんじゃなかったかなぁ? すいません、ご指摘の通りです。> No.2さん # なんか変換ルールか何かと勘違いしてたっぽい。 これだけだとなんなので以前買っていたことを思い出した「インサイド Windows 第4版」を漁ってみました。(以下引用) -- MS-DOS名の8.3フォーマットを超えるロングファイル名、Unicode文字を含むファイル名、複数のピリオドやピリオドで開始されるファイル名、およびスペースを含むファイル名(中略)このような名前を持つファイルが作成された場合、NTFSは自動的にMS-DOSスタイルのだいたいファイル名を作成します -- マルチバイトの時文字列を使ったケースについては記載がないのですが、ご参考まで。

  • 121CCagent
  • ベストアンサー率51% (14171/27617)
回答No.4

˜の部分かおかしくなってしまいました。ここは「”~"、チルダ」です。

kkusari
質問者

お礼

皆様、回答ありがとうございます。 現状、まだ納得できていません。 ファイル名が8byte以下であっても、1文字2byte(0x80以上?)の文字コードをファイル名に含めた場合、LFNのディレクトリエントリも併せて作成される事がウィンドウズの仕様なのか否かを継続して調べています。 もし、お時間がございましたら再び回答の程、宜しくお願いいたします。

  • 121CCagent
  • ベストアンサー率51% (14171/27617)
回答No.3

http://www.geocities.co.jp/SiliconValley-PaloAlto/2038/fat.html http://www.wdic.org/w/TECH/FAT あたりを参照されてみると良いと思います。 >C:\雷雷雷雷 だと8.3形式の8文字(2バイト文字だと4文字)以内になるからでは? これはANo.1で回答されている通りですね。 こちらでもフロッピーディスクをテストしてみました。ディレクトリエントリを確認するのに低空飛行と言うソフトを使いました。 A:\雷雷雷雷 だと質問者さんが書かれている通りですね。 A:\雷雷雷雷雷とすると雷雷雷˜1となるようです。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

あれ? LFN ってそういう仕様でしたっけ>#1. 8.3形式に納まっているファイル名のときは「短いファイル名」は付けないんじゃなかったかなぁ?

  • Toshi0230
  • ベストアンサー率51% (836/1635)
回答No.1

仕様を確認したわけではありませんが、Windows95がリリースされてVFATが世に出た頃、長いファイル名(Long File Name, LFN)とMS-DOS形式のファイル名との関連としては以下のように説明がありました。 ・ファイル名が8(7?)文字以上のとき:先頭6文字に"~<No.>"がつく ・ファイル名が7(6?)文字以下の時:通常のファイル名 今回のケースでは後者に該当するので、"~<No.>"がつくファイル名にはならなかったのでしょう。 ところで今回の話、LFNの扱いの話であって、VFATは関係ないんじゃ?

kkusari
質問者

お礼

早々に回答していただきありがとうございます。 >LFNの扱いの話であって、VFATは関係ないんじゃ? 確かにその通りですね。LFNの扱いでした。訂正させていただきます。 >・ファイル名が8(7?)文字以上のとき:先頭6文字に"~<No.>"がつく >・ファイル名が7(6?)文字以下の時:通常のファイル名 しかし、下記のようなフォルダを作成してみましたが、 MS-DOS形式のファイル名は、先頭6文字と”~"とNoにはなっておりませんでした。 C:\雷雷雷雷 漢字一文字が2byteですのでファイル名は8byte。 それとも文字数であって、byte数ではないのでしょうか? どうしても合点がいかないのです。

関連するQ&A

  • Fedora14のインストールにおいてVFAT領域

    を/windowsとして作成するとその領域/dev/sda11の/etc/fstabの記述は /etc/fstab: ............................................................... UUID=5E09-D226 /windows vfat umask=0077,shortname=winnt 0 0 ............................................................... となりますが この領域に日本語名のファイルやディレクトリを書き込めません また、マルチブートのVista側でこの領域に書き込んだ日本語名の ファイルやディレクトリは文字化けします そこで、fsck,backupもついでに加えて /etc/fstab: ............................................................... UUID=5E09-D226 /windows vfat utf8,umask=0077,shortname=winnt 1 2 ............................................................... と変更したら日本語の文字化け問題は解消しました しかしbackupとfsckを自動的にする0 0から1 2への変更が 有効であるかどうか分かりません fedora14でもvfatのfsckは正常に実行されるのでしょうか? よろしくお願いします

  • Excelブックの振り分け

    あるコードがファイル名となっているブックが500個(!)ほど1つのディレクトリに入っています。そのコードを基にマスタを参照して、それぞれのフォルダへ移動させたいと思います。(社員番号のファイル名でそれを基に部署フォルダに振り分けるようなイメージ)。VBAを使えばいいのでしょうが、何をどうしたものやら・・。緊急なんですが、お願いします!

  • Linuxのディレクトリエントリのサイズについて

    開発したアプリケーションで、あるディレクトリにファイルを作成し、 処理が終わったらそのディレクトリ中に作成したファイルを削除する という処理を行っています。 処理を行っている最中に「No such File or Directory」というエラーが 出ましたが、次の処理では問題なくファイルの作成、削除の処理が うまく行われていました。 作業用に使っているディレクトリ名を仮に「PDF」という名前とすると、 lsコマンドで見てみると、PDFディレクトリのサイズが、1507328 となっていました。 (ディレクトリのサイズは、4092のことが多いと考えます。) 「ディレクトリエントリ」というものがあって、たとえディレクトリ内のファイルを 消去したとしても、ディレクトリ内にファイルを作成した場合は、 ディレクトリのサイズは大きくなるということまでは理解できたのですが、 なぜ、「No such File or Directory」が出てしまったのかを調べたいです。 たとえば (1)Linux(32bit)では、ディレクトリエントリのサイズに上限がある (2)Linux(32bit)では、ディレクトリエントリのサイズが大きいと、さらにディレクトリの  サイズを拡張する場合は時間がかかる場合がある などのことがあるなど、ご存知の方はいらっしゃらないでしょうか。 Linuxは、Redhat 5.7(32bit)を使っています。 憶測としては、PDFディレクトリ下にファイルを作成した際に、ディレクトリエントリの サイズを拡張しようとして、少し時間がかかり、そのためにファイルが作成されずに アプリケーション側で作成したファイルを参照しようとした際にファイルを見つける ことができずに「No such File or Directory」とOSが返してきたのではないかと 考えています。 どうぞ、識者の方、ご教示いただければ幸甚です。 よろしくお願いいたします。

  • (VBA) 保存できない

    指定ディレクトリー(TurgetFolder)に保存しようとして  下記のコードを利用していますが、エラー(1004)が出ました。  添付画像参照下さい(丸数字有り) ------------------------- 'テキストデータにしたいシートを新しいブックとして作成し、そちらからテキストファイルを作成する Ws2.Copy ActiveWorkbook.SaveAs Filename:=TurgetFolder & FName & ".txt", FileFormat:=xlText ---------------------------- ①、②、④はエラー原因では無かった。 原因は、③で  フォルダー名に [ ] (左カッコ、 右カッコ)  を利用した事でした。  でもフォルダー名及びファイル名に同じ [ ]  があっても読み取り時は問題なく処理されます。 使用してはいけない文字があっても   他に保存する方法ありますか ? 例えば、  事前にダメ文字を書き換えて保存するとか ? EXCELの仕様で難しいのであれば諦めます。

  • Windows7の文字コード環境

    Windows7の文字コード環境についてお尋ねします。 日本で使われているWindow7において、新規ファイルやディレクト リを作成し、名前を日本語で入力すると、多くの場合S-JISコード で作成されると思います。 例えば、これらのファイルやディレクトリをCDなどに焼いて、他の ロケール(中国語や韓国語、あるいは英語)環境のWindows7で参照し た場合、日本語ファイル(あるいはディレクトリ)は文字化けせずに 表示されるのでしょうか。

  • ZIPを解凍するとフォルダ名が文字化けする

    いつもお世話になっております。 現在、linux上(CentOS 5.7)でディレクトリ名に日本語文字列を含むディレクトリ配下に、ファイル名に 日本語文字列を含まないファイルが複数あります。 これを、ディレクトリごとzipに圧縮してWinSCPでローカルのwindowsマシン(XP)に送って、 解凍をするとファイル名が文字化けしてしまいました。 *例* date_dir L1_A繝・・繧ソ_dir | L1_1_date.csv | L1_2_date.csv | L2_B繝・・繧ソ_dir    L2_1_data.csv **** *圧縮したもの* date_dirごとその下のディレクトリとファイルをZIPにする コマンド:zip data_dir/*/* date_dir L1_Aデータ_dir | L1_1_date.csv | L1_2_date.csv | L2_Bデータ_dir    L2_1_data.csv ************* ファイル名の文字コードを変換するには、「convmv」というのを使用すればよいみたいなのですが、 フォルダ名の文字コードの変換が出来ずに、困っております。 フォルダ名の文字化けを直す(正常に1_Aデータ_dirというフォルダが作成されるようにする)為には、 どのような方法があるのか、ご存知の方がいらっしゃいましたら、御教え頂けますでしょうか。

  • PHP? MySQL? どちらが原因の文字化けか

    ディレクトリの登録ページと、そのディレクトリを表示してリンク先を表示させるページを作成しました。 さっそく \\コンピュータ名\ディレクトリ名\ファイル名.doc のようなディレクトリを登録してみたところ、 画面上では \\\\コンピュータ名\\ディレクトリ名\\ファイル名.doc と文字が変わってでてしまいリンクできません。 またDBを確認したところ、DBには \\\\コンピュータ名\\ディレクトリ名\\ファイル名.doc となっていて、\マークが余分についてしまっています。 ページの文字コードはSJIS、DBはUTF8で、照合はutf8_unicode_ciになっています。 原因切り分け、回避策を教えてください。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • パソコンのフォルダやファイルの名前が文字化けみたいに;

    教えてください。困っています。 USBメディア?に保存しておいたフォルダとファイルの一部が 勝手に変な名前に変わってしまいました。 名前というよりも文字化けみたいに、変な記号みたいになっています。 フォルダを開こうとすると、 『フォルダ名、ディレクトリ名、ボリュームラベルの構文が間違えています』というエラーメッセージがでます。 ファイルも同様で、使うソフトを選んでください、とメッセージが 出て、何を選んでもダメです。 特に自分で何かをした記憶はなく、何気なく開いてみたら、名前が文字化けみたいになっていました。 どうしたら直るのでしょうか; よろしくお願いします。

  • 指定したフォルダにアップロード

    Perlを使用してアップローダーを作成しました。 今までは # 受信データを書き込む open OUT,">$fnme"; binmode OUT; print OUT $in{'upfile'}; close OUT; としていたんですが、これではファイル数が多くなった時にエライことになるので、ディレクトリを作成してその中に…と思いまして。 で、ディレクトリをオープンが opendir DIR, "$folder_name"; ということはわかったのですが、 これを上記と組み合わせるにはどうしたらいいのでしょうか? ためしに opendir DIR, "$folder_name"; open OUT, ">$fnme"; binmode OUT; print OUT $in{'upfile'}; close OUT; closedir folder; としてみましたが、普通にcgiがあるフォルダにアップロードされてしまいました(^^; ディレクトリの中のファイル名を取得とかはあったんですが、指定のフォルダにアップロード、が見つからなくて…。

    • ベストアンサー
    • Perl
  • 名を付けて保存のコード(エクセルVBA)

    セルA1に書いてある文字をそのままファイル名にして保存させるコードの記述方法を教えて下さい。 例) A1に 「’001」を入力しておき、シート上に配置してあるコマンドボタンをクリックすることで、「001.xls」と名を付けて、あらかじめ決めてある、ディレクトリに保存 エクセル97を使用しています。上書き保存とか、予めコード内にファイル名を書いておく方法は分かったのですが、セルを参照させる方法が分かりません! どなたか詳しい方、宜しくお願い致します。