为什么 NTFS 区分大小写?

Can*_*uke 25 windows ntfs chkdsk posix

我个人认为 NTFS 不区分大小写,因为您可以键入 cmd、CMD、cMd 甚至 CmD 并仍然获得命令提示符。但是,为什么在 a 期间CHKDSK x: /f /r,有时会修复某些文件中的大小写?如果它不关心这种情况,那应该无关紧要,并且 CHKDSK 不应该检查它实际上是 CMD 还是 cmd。我对吗?它在文件系统中真正重要的地方在哪里?

Fra*_*ank 35

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

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

  • @Luke:Win32 不支持区分大小写的文件。您必须对操作系统子系统进行 API 调用。http://www.osronline.com/article.cfm?id=91 (2认同)
  • @Luke:一种简单的方法是从 Linux 系统挂载 NTFS 驱动器并在那里创建您想要的文件:) (2认同)
  • 请确保您拥有正确版本的 Windows NT 并安装基于 UNIX 应用程序实用程序的子系统。 (2认同)

squ*_*man 7

它实际上不是您要询问的 NTFS。

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

同样,CHKDSK 不会对您使用的是 CMD 还是 cmd 进行任何类型的检查。所有 CHKDSK 知道的是您传递给它的参数,在本例中是 x:、/f 和 /r。

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

  • NTFS 区分大小写。根据 MS KB 文章 100625:在 NTFS 中,您可以创建存储在同一目录中的唯一文件名,仅在大小写上有所不同。例如,以下文件名可以共存于 NTFS 卷上的一个目录中: CASE.TXT case.txt case.TXT 但是,如果您尝试在 Win32 应用程序(例如记事本)中打开这些文件之一,您将只能访问到其中一个文件,无论您在“打开文件”对话框中键入的文件名的大小写如何。 (4认同)
  • @Synetech:也许是第一个?取决于目录中的文件顺序,可能还有月相。 (4认同)

kre*_*eet 5

我怀疑提问者声称 chkdsk.exe 是“修复某些文件中的大小写”实际上是由在某些情况下发生的 CHKDSK 消息提示的:

更正大写文件中的错误

基本上,这是由于 Windows XP 版本的 chkdsk.exe 对已在更高版本的 Windows 中格式化的 NTFS 卷运行造成的,如在基于 Windows XP 的或在 Windows 上运行 Chkdsk.exe 时的错误消息中所述基于 Server 2003 的计算机:“更正大写文件中的错误”。结果是这真的不是错误,与区分大小写无关。