为什么NTFS区分大小写?


24

我个人认为NTFS不区分大小写,因为您可以键入cmd,CMD,cMd甚至CmD并仍然得到命令提示符。但是,为什么在期间CHKDSK x: /f /r有时会修复某些文件中的大写字母呢?如果它不关心这种情况,则不必担心,CHKDSK也不应检查它是否实际上是CMD或cmd。我对吗?在文件系统中实际在哪里起作用?


25
请注意,“区分大小写”和“区分大小写”是两个不同的东西。NTFS保留大小写,但在Win32名称空间中不区分大小写,但在POSIX名称空间中可以区分大小写。
grawity 2011年

Answers:


34

文件系统的区分大小写是与操作系统分开的问题。最新的Windows版本基于NT内核,该内核继承了非NT Windows 95甚至MS-DOS的许多属性。与NT内核一起,文件系统NTFS被设计为区分大小写- 符合POSIX

尽管Win32子系统不支持仅区分大小写而不同的文件名,但是可以使用较低级别的系统调用来创建这些文件。


1
我不知道在Windows中创建此类文件的简便方法。但是,使用FILE_FLAG_POSIX_SEMANTICS位调用CreateFile()API应该以编程方式完成该工作。
法兰克

2
@Luke:Win32不支持区分大小写的文件。您将必须对OS子系统进行API调用。 osronline.com/article.cfm?id=91
surfasb

2
@Luke:一种简单的方法是从Linux系统挂载NTFS驱动器,然后在其中创建所需的文件:)
Hippo

1
只需确保您具有正确的Windows NT版本,然后为基于UNIX的应用程序实用程序安装人员子系统即可。
JdeBP

1
@卢克:和往常一样,维基百科来营救。:-)
afrazier 2011年

7

您要查询的实际上不是NTFS。

NTFS是文件系统。您的问题确实与Windows命令外壳的大小写有关。他们是完全不同的。Windows资源管理器是一个图形命令外壳。通过输入cmd(例如,在“开始” |“运行”中)来告诉Windows命令外壳执行命令cmd(它本身实际上是另一个命令外壳,但是基于命令行而不是图形)。

同样,CHKDSK不会对您使用的是CMD还是cmd进行任何检查。CHKDSK所知道的只是传递给它的参数,在这种情况下,它们是x:,/ f和/ r。

至于CHKDSK的“固定大写”,我不太确定您的意思。


4
NTFS区分大小写。根据MS KB文章100625:在NTFS中,您可以创建存储在同一目录中的唯一文件名,只是大小写不同。例如,以下文件名可以共存于NTFS卷上的一个目录中:CASE.TXT case.txt case.TXT但是,如果尝试在Win32应用程序(例如记事本)中打开这些文件之一,则您只能访问文件之一,无论您在“打开文件”对话框中键入文件名的大小写如何。
弗兰克,

是的,谢谢您的澄清。我已经从答案中删除了这一点,因为无论如何这并不是问题所在。
squillman 2011年

>但是,如果尝试在Win32应用程序(例如记事本)中打开这些文件之一,则无论您在“打开文件”对话框中键入文件名的大小写如何,都只能访问其中一个文件
Synetech 2011年

4
@Synetech:也许是第一个?取决于目录中的文件顺序,以及月相。
grawity 2011年

5

我怀疑提问者声称chkdsk.exe是“固定某些文件中的大写字母”的问题实际上是由在某些情况下出现的来自CHKDSK的消息提示的:

纠正大写文件中的错误

基本上,这是由Windows XP版本的chkdsk.exe与在更高版本的Windows中格式化的NTFS卷运行而导致的,如在基于Windows XP的Windows或Windows上运行Chkdsk.exe时出现的错误消息中所述。基于Server 2003的计算机:“更正大写文件中的错误”。结果是这确实不是错误,并且与大小写无关。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.