Windows短檔名中~後面的數字是如何分配的?

Windows短檔名中~後面的數字是如何分配的?

Windows 仍然使用~長名稱來縮短檔案和目錄。您可以透過dir /X在命令提示字元中鍵入來查看“短”名稱。

我的問題是如何將數字分配給短文件名?它似乎不是按字母順序排列的,也不是按文件創建時間工作的。

例如:

我建立一個新的文字檔案:C:\reallylongfilenameB.txt

然後我運行dir /X並看到 fileB 的短名稱是REALLY~1.TXT

我建立第二個文字檔案:C:\reallylongfilenameA.txt

然後我運行dir /X並看到 fileA 的短名稱是REALLY~2.TXT

然後我將時鐘調慢一天,刪除C:\reallylongfilenameA.txt然後重新建立它,本質上使創建日期C:\reallylongfilenameA.txt提前 1 天C:\reallylongfilenameB.txt

我跑了dir /XC:\reallylongfilenameA.txt簡稱仍然是REALLY~2.TXT

C:\reallylongfilenameA.txt有鑑於此範例,有什麼方法可以使be的簡稱嗎REALLY~1.TXT

答案1

據我了解,NTFS 在建立時會自動指派持久的 8.3 檔案名稱。當您執行 dir /X 時,它不會即時縮短檔案名,而是尋找預先分配的短名稱。

來源:http://en.wikipedia.org/wiki/8.3_filename

答案2

正如傑克在他的回答中指出的那樣,短名稱是在創建文件(或重新命名或移動)時分配的。該值取決於長檔名以及已存在的其他短名稱。

確切的短名稱分配演算法沒有記錄,並且不能保證演算法在 Windows 版本之間、甚至不同儲存系統格式之間保持不變。您不應編寫依賴任何特定短名稱分配演算法的程式碼。

短檔名既存在設計限制,也存在錯誤。設計限制的一個範例是del *.txt可以刪除名為 的文件,something.txt2因為短名稱的副檔名可能是.txt,而且來源遮罩會同時查看長名稱和短名稱。請參閱標題為“BUG - 短 8.3 檔案名稱可能會破壞 /D 和 /S 選項”Windows FINDSTR 指令有哪些未記錄的功能和限制?有關由短名稱引起的錯誤的範例。

NTFS 磁碟區可以停用短檔案名稱(停用它們之前存在的短名稱將保留)。許多人(組織)在他們的系統上停用短名稱,因為它們可能會導致問題。

更新

這是一個明確的論據,說明為什麼嘗試建立如何產生短文件名的演算法是浪費時間 -FSUTIL 允許您為檔案指定任何短名稱,只要該資料夾中尚不存在該檔案即可。

這裡是相關的FSUTIL幫助文檔

C:\test>fsutil file
---- FILE Commands Supported ----

findbysid               Find a file by security identifier
queryallocranges        Query the allocated ranges for a file
setshortname            Set the short name for a file
setvaliddata            Set the valid data length for a file
setzerodata             Set the zero data for a file
createnew               Creates a new file of a specified size
queryfileid             Queries the file ID of the specified file
queryfilenamebyid       Displays a random link name for the file ID

C:\test>fsutil file setshortname /?
Usage : fsutil file setshortname <filename> <shortname>
   Eg : fsutil file setshortname C:\testfile.txt testfile

相關內容