題 為什麼NTFS區分大小寫?


我個人認為NTFS不區分大小寫,因為您可以鍵入cmd,CMD,cMd甚至CmD,仍然可以獲得命令提示符。但是,為什麼會這樣呢? CHKDSK x: /f /r,有時它修復了一些文件中的大寫?如果它不關心這種情況,那應該沒關係,CHKDSK不應該檢查它是否實際上是CMD或cmd。我對嗎?它在文件系統中的實際位置在哪裡?


24
2017-12-02 20:45


起源


請注意,“區分大小寫”和“保留大小寫”是兩個不同的東西。 NTFS在Win32命名空間中保持大小寫但不區分大小寫,但在POSIX名稱空間中可以區分大小寫。 - grawity


答案:


文件系統的區分大小寫是與操作系統不同的問題。最新的Windows版本基於NT內核,它繼承了非NT Windows 95甚至MS-DOS的許多屬性。與NT內核一起,文件系統NTFS被設計為區分大小寫 - 即 符合POSIX標準

雖然Win32子系統不支持僅區分大小寫的文件名,但可以使用較低級別的系統調用創建這些文件。


33
2017-12-02 20:53



我不知道在Windows中創建此類文件的簡單方法。但是,使用FILE_FLAG_POSIX_SEMANTICS位調用CreateFile()API應該以編程方式執行作業。 - Frank
@Luke:Win32不支持區分大小寫的文件。你必須在OS子系統中進行API調用。 osronline.com/article.cfm?id=91 - surfasb
@Luke:一種簡單的方法是從Linux系統安裝NTFS驅動器並創建你想要的文件:) - Hippo
只需確保您擁有正確版本的Windows NT並安裝基於UNIX的應用程序實用程序子系統,即人員。 - JdeBP
@Luke:像往常一樣, 維基百科 救援。 :-) - afrazier


它實際上不是您正在詢問的NTFS。

NTFS是文件系統。您的問題實際上是關於Windows命令shell的區分大小寫。他們完全不同。 Windows資源管理器是一個圖形命令shell。通過委託 cmd (在“開始”|“運行”中)您告訴Windows命令shell執行該命令 cmd (它本身實際上是另一個命令shell,但是基於命令行而不是圖形)。

同樣,CHKDSK沒有對您是否使用CMD或cmd進行任何檢查。所有CHKDSK都知道你傳遞給它的參數,在這種情況下是x:,/ f和/ r。

至於CHKDSK“固定資本化”,我不太清楚你的意思。


7
2017-12-02 20:53



NTFS區分大小寫。根據MS KB文章100625:在NTFS中,您可以創建存儲在同一目錄中的唯一文件名,僅在大小寫上有所不同。例如,以下文件名可以共存於NTFS卷上的一個目錄中:CASE.TXT case.txt case.TXT但是,如果您嘗試在Win32應用程序(如記事本)中打開其中一個文件,則只能訪問對於其中一個文件,無論您在“打開文件”對話框中鍵入的文件名是什麼情況。 - Frank
這是真的,謝謝你澄清這一點。我已經從我的答案中刪除了這一點,因為它無論如何都不是真正的問題。 - squillman
>但是,如果您嘗試在Win32應用程序(如記事本)中打開其中一個文件,則只能訪問其中一個文件,無論您在“打開文件”對話框中鍵入的文件名是什麼情況 哪一個? - Synetech
@Synetech:也許是第一個?取決於目錄中的文件順序,可能還有月相。 - grawity


我懷疑提問者聲稱chkdsk.exe是“在某些文件中修復大寫”實際上是由CHKDSK在某些情況下發生的消息提示:

糾正大寫文件中的錯誤

基本上,這是因為Windows XP版本的chkdsk.exe針對NTFS卷運行,該NTFS卷已在更高版本的Windows中格式化,如 在基於Windows XP或基於Windows Server 2003的計算機上運行Chkdsk.exe時出現錯誤消息:“更正大寫文件中的錯誤”。結果是,這實際上不是錯誤,與案例敏感性無關。


5
2018-02-08 05:39