在windows 11中,关闭ntfs 8.3短文件名可提升百万级文件场景下的元数据操作性能;需先用fsutil 8dot3name query查询状态,再以管理员权限执行fsutil 8dot3name set c: 1禁用,最后可选fsutil 8dot3name strip /s递归清除历史短名。

在Windows 11中,当系统盘文件数量超过百万级(如Node.js项目node_modules、.NET SDK缓存、Docker镜像层等场景),NTFS持续生成和维护8.3短文件名会显著拖慢创建、重命名、删除等元数据操作,关闭该功能可降低MFT压力并减少磁盘I/O争用。
确认当前短文件名状态
以管理员身份运行命令提示符:右键“开始”→选择“Windows Terminal(管理员)”或“命令提示符(管理员)”。
执行查询命令:fsutil 8dot3name query C:(将C:替换为你想优化的盘符)。
若返回The registry state is currently enabled.,说明短文件名功能处于开启状态,可继续下一步;若已显示disabled,则无需操作。
用fsutil命令关闭短文件名
在同一个管理员终端中,输入以下命令并回车:
fsutil 8dot3name set C: 1
命令执行成功后会显示The operation completed successfully.。注意:此命令仅对指定卷生效,且【不会立即清除已有短文件名】,只阻止后续新文件生成8.3别名。
该操作无需重启即可生效,但旧文件的短名称仍保留在目录项中,直到被显式删除或目录重建。
彻底清除历史短文件名(可选)
方法一:使用PowerShell批量清理(推荐)
在管理员PowerShell中逐行执行:
Get-PSDrive C | ForEach-Object { fsutil 8dot3name strip /s $_.Root }
这会递归扫描C:根目录下所有子目录和文件,主动剥离已存在的8.3名称。耗时取决于文件总数,百万级目录可能需10–30分钟,期间磁盘占用率升高属正常现象。
方法二:仅清空特定路径(精准控制)
例如只清理开发常用路径:fsutil 8dot3name strip /s "C:\Projects"。这样避免误触系统关键目录,也减少对用户数据目录的影响。
【重要提醒】strip操作不可逆,执行前请确保已备份重要数据——它会永久移除NTFS目录项中的8.3别名字段,某些老旧安装包或批处理脚本若硬编码了短文件名,可能失效。
验证是否生效
第一步:新建测试文件夹,进入CMD,切换至该路径,执行dir /x。
第二步:创建一个长文件名文件,例如my-super-long-test-file-for-8dot3.txt。
第三步:再次执行dir /x,观察输出中是否出现类似MY-SUP~1.TXT的短名条目。
若无任何波浪线格式的短名显示,说明禁用成功;若有,则检查是否遗漏了fsutil set步骤或目标盘符不一致。











