2013-01-02 31 views
0

我需要構建一個SDHC卡(FAT32),其中包含一個獨立選擇短和長文件名的目錄。例如。短文件名MYDIR但根據維基百科的長名i am a cool name. yeah. check out the awesomeness.,有兩個名字之間沒有強制性的關係,所以我的目標應該是可能的:FAT32:分別設置長文件名和8.3文件名

有用於從LFN創建8.3名稱沒有強制算法

- http://en.wikipedia.org/wiki/8.3_filename#Overview

我可以使用任何必要的系統來做到這一點(在Windows,Mac,Linux操作系統,十六進制編輯器),但更容易越好。謝謝!

+0

你使用API​​來做到這一點嗎?如果是這樣,哪一個?如果沒有,那麼StackOverflow可能不是問這個問題的正確地方。 –

+0

您可以使用fsutil setshortname在NTFS上執行此操作:http://technet.microsoft.com/en-us/library/bb490642.aspx – AlcubierreDrive

回答

1

短文件名是使用您提到的算法從LFN自動強制構建的。 (在FAT32 specifications中也有詳細說明)。這是通過文件系統驅動程序完成的(至少在Windows和Linux上)。除非修改驅動程序,否則您確實無法更改該驅動程序。如果您只想爲一個目錄執行此操作,則可以通過修改十六進制編輯器中的磁盤映像來實現此目的,該編輯器不要使用相同名稱創建重複條目。

這裏是我試圖在Linux上:

#dd if=/dev/zero of=fatImage bs=1048576 count=256 
#mkfs.vfat -F 32 fatImage 
#mount -o loop fatImage /mnt 
#cd /mnt 
#mkdir ThisIsALongDirectoryName 

脂肪驅動程序的目錄生成一個短名稱:THISIS〜1。 您可以使用兩個名稱來訪問它。

#cd /mnt/ThisIsALongDirectoryName 
#cd /mnt/THISIS~1 

然後卸除分區後,我在十六進制編輯器(Okteta上KDE)打開圖像,關注SFN條目THISIS〜1, 並用MYNEWDIR取而代之。另外,每個32字節的LFN子條目存儲在偏移13處的SFN的校驗和。因此,我必須calculate並用THNIS_1(它是0xA6)所有的LFN子條目。保存修改後,我重新安裝了映像,並能夠使用舊的LFN和新的SFN訪問該目錄。

#cd /mnt/ThisIsALongDirectoryName 
#cd /mnt/MYNEWDIR 
+0

你說你試過這個。你用什麼工具?你有指示嗎?即使它最終失敗了,我也想爲自己努力。謝謝! :) – AlcubierreDrive

+1

@JonRodriguez其實,有可能做我所描述的所有事情。請看最新的答案。 – itisravi

+0

太棒了!謝謝! – AlcubierreDrive

0

我不會依靠維基百科作爲技術參考。最好諮詢微軟的文檔。閱讀這個,我想這兩個文件之間可能有關係,所以我不會推薦擺弄這些。使用簡稱可能會更好。

+0

謝謝。您能否引用您發現的很好的文檔? – AlcubierreDrive

+2

http://msdn.microsoft.com/en-us/library/windows/hardware/gg463080.aspx上的FAT32規範是一個好的開始 – Rob