【Windows系统】调整区分大小写

区分大小写确定在文件名或目录中是将大写 (FOO.txt) 和小写 (foo.txt) 字母作为不同项(区分大小写)还是等效项(不区分大小写)进行处理。

  • 区分大小写:FOO.txt ≠ foo.txt ≠ Foo.txt
  • 不区分大小写:FOO.txt = foo.txt = Foo.txt

Windows 和 Linux 区分大小写之间的差异

使用 Linux 和 Windows 文件和目录时,可能需要调整区分大小写的处理方式。

标准行为:

Windows 文件系统将文件和目录名称视为不区分大小写。 FOO.txt 和 foo.txt 将被视为等效文件。
Linux 文件系统将文件和目录名称视为区分大小写。 FOO.txt 和 foo.txt 将被视为不同文件。
Windows 文件系统支持使用属性标志按目录设置区分大小写。 虽然标准行为是不区分大小写,但你可以分配属性标志来使目录区分大小写,以便它能够识别可能仅大小写不同的 Linux 文件和文件夹。

在将驱动器装载到适用于 Linux 的 Windows 子系统 (WSL) 文件系统时,尤其如此。 在 WSL 文件系统中工作时,运行的是 Linux,因此默认情况下,文件和目录被视为区分大小写。

! ◯ \textcircled ! !备注
在过去,如果文件的名称仅大小写不同,则 Windows 将无法访问这些文件,因为 Windows 应用程序将文件系统视为不区分大小写,并且无法区分名称仅大小写不同的文件。 虽然 Windows 文件资源管理器将同时显示这两个文件,但无论你选择哪一个文件,都只会打开一个文件。

更改文件和目录的区分大小写

以下步骤说明如何更改 Windows 文件系统上的目录,使其区分大小写,并能识别仅大小写不同的文件和文件夹。

⚠警告
某些 Windows 应用程序(假定文件系统不区分大小写)不使用正确的大小写来引用文件。 例如,应用程序将文件名转换为全部使用大写或小写的情况并不罕见。 在标记为区分大小写的目录中,这意味着这些应用程序将无法再访问这些文件。 此外,如果 Windows 应用程序在使用区分大小写的文件的目录树中创建新目录,则这些目录不区分大小写。 这可能会导致难以在区分大小写的目录中使用 Windows 工具,因此,在更改 Windows 文件系统区分大小写设置时要小心谨慎。

检查当前区分大小写

若要检查 Windows 文件系统中的目录是否区分大小写,请运行以下命令:

fsutil.exe file queryCaseSensitiveInfo <path>

<path> 替换为文件路径。 对于 Windows (NTFS) 文件系统中的目录,<path> 将如下所示:C:\Users\user1\case-test,如果你已位于 user1 目录中,则可以直接运行:fsutil.exe file setCaseSensitiveInfo case-test

修改区分大小写

自 Windows 10 内部版本 17107 开始,支持按目录区分大小写。 在 Windows 10 内部版本 17692 中,支持已更新,以包括从 WSL 内检查和修改目录的区分大小写标志。 使用名为 system.wsl_case_sensitive 的扩展属性公开区分大小写。 对于不区分大小写的目录,此属性的值为 0;对于区分大小写的目录,此属性的值为 1。

更改目录的区分大小写需要运行提升的权限(以管理员身份运行)。 更改区分大小写标志还需要对目录具有“写入属性”、“创建文件”、“创建文件夹”和“删除子文件夹和文件”权限。 有关这方面的更多信息,请参阅疑难解答部分。

若要更改 Windows 文件系统中的目录,使其区分大小写 (FOO ≠ foo),请以管理员身份运行 PowerShell 并使用以下命令:

fsutil.exe file setCaseSensitiveInfo <path> enable

若要将 Windows 文件系统中的目录更改回默认设置不区分大小写 (FOO = foo),请以管理员身份运行 PowerShell 并使用以下命令:

fsutil.exe file setCaseSensitiveInfo <path> disable

目录必须为空,才能更改该目录的区分大小写标志属性。 对于包含其名称仅大小写不同的文件夹/文件的目录,不能禁用区分大小写标志。

区分大小写的继承性
创建新目录时,这些目录将继承其父目录的大小写区分设置。

⚠警告
在 WSL 1 模式下运行时,此继承策略会出现异常。 当发行版在 WSL 1 模式下运行时,不会继承每个目录的区分大小写标志;在区分大小写的目录中创建的目录不会自动区分大小写。 必须将每个目录显式标记为区分大小写


示例

1. 开启 “适用于 Linux 的 Windows 子系统”

在这里插入图片描述

2. 重启计算机

3. 使用命令提示符启用 区分大小写

命令提示符以管理员身份运行

启用

fsutil.exe file setCaseSensitiveInfo "F:\sim-linux\case-test" enable

在这里插入图片描述


如果出现下面问题 “拒绝访问。”,请尝试到其他目录下去执行如:

此应用无法在你的电脑上运行
若要找到适用于你的电脑的版本,请咨询软件发布者。

在这里插入图片描述

C:\Users\admin>fsutil.exe file setCaseSensitiveInfo "F:\sim-linux\case-test"
拒绝访问。

C:\Users\admin>d:

D:\>fsutil.exe file setCaseSensitiveInfo "F:\sim-linux\case-test"
已启用目录 F:\sim-linux\case-test 的区分大小写属性。

D:\>

在这里插入图片描述


查看

fsutil.exe file queryCaseSensitiveInfo "F:\sim-linux\case-test" 

在这里插入图片描述


禁用

fsutil.exe file setCaseSensitiveInfo "F:\sim-linux\case-test" disable

在这里插入图片描述

注意: 禁用前先删除排除 大小写有区别的条目。再执行如下操作,否则会有如下报错

C:\Users\admin>fsutil.exe file setCaseSensitiveInfo "F:\sim-linux\case-test" disable
错误:  该目录包含仅名称大小写有区别的条目。

在这里插入图片描述

4. 创建 只有大小写不一样文件/文件夹

在这里插入图片描述


如果以下错误

C:\Users\Administrator>fsutil.exe file setCaseSensitiveInfo "H:\sim-linux\case-test" enable
错误:  不支持该请求。

在这里插入图片描述
注意请检测Windows 功能“适用于 Linux 的 Windows 子系统” 是否开启。启用后是否重启计算机

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值