惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

美团技术团队
N
Netflix TechBlog - Medium
WordPress大学
WordPress大学
云风的 BLOG
云风的 BLOG
J
Java Code Geeks
V
Visual Studio Blog
H
Help Net Security
Engineering at Meta
Engineering at Meta
Hugging Face - Blog
Hugging Face - Blog
Microsoft Security Blog
Microsoft Security Blog
腾讯CDC
博客园 - 【当耐特】
B
Blog
Stack Overflow Blog
Stack Overflow Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
大猫的无限游戏
大猫的无限游戏
GbyAI
GbyAI
博客园 - 司徒正美
博客园 - 叶小钗
Y
Y Combinator Blog
MyScale Blog
MyScale Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
G
Google Developers Blog
酷 壳 – CoolShell
酷 壳 – CoolShell

Windows

Windows“快速启动”不工作——混合关闭已被磁盘检查请求覆盖。系统将改为执行完全关闭。 - V2EX 京东店卖的哪些 FPP 零售彩盒 靠谱吗。 - V2EX Gluestick - 比 Scoop 更快、更好用的包管理器 - V2EX MSPCManagerService.exe 占用 cpu , 如何解决 - V2EX 十几年了,微软还是没修复资源管理器图标排列的问题 - V2EX Windows 下图片标注工具没有一个好用的 - V2EX 有没有遇到更新 Win11 2026-07 之后每次开机反复 chkdsk 的(NTFS 分区被标 dirty) - V2EX 用 AI 搓了个通过 DLNA 协议投屏的小工具 大家有用过 Power Automate 吗? 一台[物理断网]+[加密解密专用]的 WIN 电脑,如何在开机后“主动补熵”呢? 做了个原生的护眼应用 把 Windows Terminal 优化配置过程更新了一下 Windows 10 任务管理器闪退问题 有没有人 vibe coding 一个支持 udp 的运行在 macos 上的 windows App? 最近准备更新系统到 windows 11,大家给 win 11 分配的 C 盘空间是多少 - V2EX IDM 下载器是不是出问题了 一直让 Windows 资源管理器崩溃 终于解决困扰我 2 年多的 win10 内存泄漏问题了 WSL Containers 有老哥用上了吗? Win RDP 远程桌面音频时不时抽风(无声音) 大佬们我重装了个 win11 以后,右键任务栏的程序不会出现功能了 求助!个人平时用 windows 都是打游戏,如何给 windows 做程序员风格优化?周末想给老婆的电脑处理一下 windows11 专业版,微软商店下载的 chatgpt 桌面版,打开速度很慢。点击之后大概 1 分钟才真正打开,才弹出窗口。这是什么问题,如何解决? Windows11 里面的防火墙规则,如何有效清理? win11 笔记本开启虚拟化安全和内存完整性两项功能么? 用惯了 MacOS 启动台 Launchpad,于是我创建了 Windows 版的 Launchpad AI 可以精简 windows 镜像(国产的不行) 2026 年了,还有人使用精简 windows 镜像吗? 游戏美术专业学生,拯救者 Y9000P 和 ASUS ProArt 16,应该选哪一款? Microsoft.Coreutils 看起来很普通啊,为毛大家都在吹 CPU 不在 win11 支持列表中,如果安装 11,有啥后果?
Windows 文件路径长度限制是多少个字符? 244、255、256、260...
fengwq · 2026-03-27 · via Windows

到底是多少个字符?

256

微软文档《 最大路径长度限制 》( Maximum Path Length Limitation ):
在 Windows API 中,路径的最大长度为 MAX_PATH ,为 260 个字符
系统按以下顺序构建本地路径:驱动器号、冒号、反斜杠、用反斜杠分隔的路径和终止 null 字符。
例如,驱动器 D 上的最大路径为:
D:\某个 256 个字符的路径字符串<NUL>
其中 <NUL> 表示当前系统代码页的不可见终止 null 字符。(<> 字符在此用于醒目用途,不能作为有效路径字符串的一部分。)

文档到这里的意思是:路径总长度是 260 个字符,掐头去尾中间可用的部分是 256 个字符(英文版也是 256 )。

那么来测试一下。
测试用例

240-00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

251-0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

252-00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

字符串计数工具

244

D:\ 路径,使用「文件资源管理器( Explorer.exe )」创建文件或文件夹,只能创建 244 个字符的文件、文件夹

目标路径太长.png
这张图是在一个 D:\244 字符 的文件夹里,继续新建文件夹的报错「目标路径太长」。

然后我发现群晖文档《 如果 Windows 文件资源管理器提示文件名过长,我该怎么办? 》讲得很清楚:
最大可用路径长度为 244 个字符,因为 Windows 文件资源管理器为 8.3 文件名格式预留了 12 个字符。」

其实微软文档《最大路径长度限制》也提到了:「使用 API 创建目录时,指定的路径不能太长以致于无法附加 8.3 文件名(即目录名不能超过 MAX_PATH 减 12 )」。只是不太显眼,容易被忽略。

「 8.3 文件名」是什么?

在 MS-DOS FAT 文件系统,基础文件名最多 8 个字符,扩展名最多 3 个字符,总共支持 12 个字符(包括点分隔符),所以被称为 8.3 文件名。Windows FAT 和 NTFS 文件系统不限于 8.3 文件名,因为它们有长文件名支持功能,但也支持 8.3 版本的长文件名。

在 Win10 、Win11 系统,系统盘默认启用 8.3 文件名,非系统盘默认禁用 8.3 文件名
可以用 fsutil 查询(需要管理员权限):

fsutil 8dot3name query D:
卷状态为: 1 (8dot3 名称创建已禁用)
注册表状态为: 2 (按卷设置 - 默认值)

基于上述设置,8dot3 名称创建已在“D:”上禁用

在启用了 8.3 文件名的盘中,创建文件名超过 12 个字符的文件,系统会自动生成相应的 8.3 文件名,即「短文件名」

微软文档《 命名文件、路径和命名空间
微软文档《 8.3 Filename
关于 Windows 文件名和路径名的那些事
联想文档《 什么是 8.3 格式?

所以,文件资源管理器为了兼容性,进一步限制,就只能创建 256 - 12 = 244 个字符的文件、文件夹。

255

在「群晖文档」中提到:「此限制仅适用于 Windows 文件资源管理器和 Windows API 。使用 Windows PowerShell 或 命令提示符 中的 ren 或 rename 命令重命名文件不受影响。」

测试后确实,使用 ren 可以创建超过 244 个字符的文件、文件夹。
但是,文件不能超过 255 个字符,文件夹不能超过 254 个字符:( -LiteralPath 是必须的):

ren -LiteralPath "1" "252-00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000345"
ren : 指定的路径或文件名太长,或者两者都太长。完全限定文件名必须少于 260 个字符,并且目录名必须少于 248 个字符。
所在位置 行:1 字符: 1
+ ren -LiteralPath "1" "252-0000000000000000000000000000000000000000000 ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : WriteError: (D:\1:String) [Rename-Item], PathTooLongException
    + FullyQualifiedErrorId : RenameItemIOError,Microsoft.PowerShell.Commands.RenameItemCommand

报错是:「完全限定文件名必须少于 260 个字符,并且目录名必须少于 248 个字符」。
微软文档《 Git 跨平台兼容性 》:「对于具有 .NET 的目录,完全限定的文件名必须少于 260 个字符,目录名称必须少于 248 个字符」。

为什么文件最多 255 个字符?既不是 256 也不是 244 ,代码实现与文档《最大路径长度限制》是对不上的。
在另一篇微软文档《 Filename 》倒是提到了 255 个字符:A filename MUST be at least one character but no more than 255 characters in length.

为什么文件夹最多 254 个字符?这个数字更是哪都对不上。还有,使用 mkdir 只能创建 244 个字符的文件夹。

「启用长路径」有用吗?

「启用长路径」也就是注册表值 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem LongPathsEnabled (Type: REG_DWORD) 设置为 1 。

微软文档《最大路径长度限制》:启用之后,「允许最大总路径长度为 32767 个字符的扩展长度路径」,要指定扩展长度路径,要使用 \\?\ 前缀。例如,\\?\D:\非常长的路径

它只对部分 Windows 函数生效

单个文件、文件夹的名字上限还是 255

前面测试的文件资源管理器,PowerShell 的 New-Item 、Rename-Item 等命令仍然不完全支持长路径
New-Item 、Rename-Item 具体调用的是什么函数?这个问题超出我能力范围了。

启用长路径之后,mkdirNew-Item -ItemType Directory -Path)可以创建 255 个字符的文件夹,限制只增加了 11 个字符,在这个文件夹下也能继续创建文件。

mkdir "252-00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000345"

    目录: D:\
Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----         2026-3-19     21:49                252-00000000000000000000000000000000000000000000000000000000000000000
                                                  000000000000000000000000000000000000000000000000000000000000000000000
                                                  000000000000000000000000000000000000000000000000000000000000000000000
                                                  000000000000000000000000000000000000000000000345

长路径语法 \\?\

如果按文档,加上 \\?\ 反而会报错:

mkdir "\\?\D:\252-00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000345"
mkdir : 路径不能为空字符串或全为空白。
参数名: path2
所在位置 行:1 字符: 1
+ mkdir "\\?\D:\252-000000000000000000000000000000000000000000000000000 ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (\\?\D:\252-0000...000000000000345:String) [New-Item],ArgumentException
    + FullyQualifiedErrorId : CreateDirectoryArgumentError,Microsoft.PowerShell.Commands.NewItemCommand

New-Item 创建文件时,支持 \\?\ 语法:New-Item "\\?\D:\123" 。但创建文件夹时,又不支持了。
Rename-Item 支持 \\?\ 语法:Rename-Item -LiteralPath "\\?\D:\1" "\\?\D:\123" 能正常运行。
Remove-Item 支持 \\?\ 语法,而且对超过 255 个字符的命令没有报错。还好它是支持的,否则创建之后不能删除就麻烦了。

PowerShell 5.1 启用长路径前 启用后
文件资源管理器 244 244
mkdir 244 255
ni (文件) 255 255
ren 文件夹 254 ,文件 255 255
del 超过 4000

255 还不到 32767 零头的一半。

PowerShell 7

Win10 、Win11 默认的 PowerShell 是 5.1 版本的
$PSVersionTable 查看版本。

我下载了 PowerShell 7.6.0 版本进行测试。

PowerShell 7.6.0 启用长路径前 启用后
mkdir 255 255
ni (文件) 255 255
ren 文件、文件夹都是 255 255
del 超过 4000

统一是 255 字符了,比 5.1 版本好一些,但还是不支持长路径,使用 \\?\ 语法也不行。

多层文件夹的路径上限

虽然单个文件、文件夹的名字上限是 255 个字符,但多层目录的限制又不一样了。在未启用长路径的情况下,就可以创建超过 4000 个字符的路径。还能在这个路径下新建 txt ,并且用「记事本」读写:

4200 多个字符路径.png

而且,到了这个长度,「文件资源管理器」报错是「目录名称无效」:

explorer.exe-目录名称无效.png

「启用长路径」之后这个报错也还在。

就到此为止吧,暂时不继续研究了。

第三方软件的支持情况

PikPak

终于到了我研究这个问题的初心了!
我发现 PikPak 的 Windows 客户端下载文件( v2.8.16.5418 ),文件名超过 100 个字符的部分会被截断。网页端没有这个问题。
于是我去找客服提了 bug ,只过了 11 天,官方就在 2.9.0 版本修复了。我要给 PikPak 的客服和研发点赞,认真处理用户反馈。

修复后的逻辑是这样的:
总路径长度支持 500 个字符:包括 246 个字符的文件名,246 个字符的上层路径(可以有多层文件夹):
\\?\D:\246 个字符的路径\246 个字符的文件名
如果超过限制,会弹出「下载失败」的通知。

总结

截至 2026-03 月,使用 Windows 系统,路径长度(文件名)最好控制在 244 个字符以内
单个文件、文件夹的名字上限是 255 个字符。
多层文件夹的路径上限超过 4000 个字符。
「启用长路径」的作用鸡肋。

提醒:4 个字符的扩展名是很常见的
.avif .docx .flac .html .jpeg .json .m3u8 .pptx .webp .xlsx

参考资料

Windows10 下路径名称限制

群晖文档《 Cloud Station Backup 帮助 》:
Cloud Station Backup 默认在以下情况下不会备份文件和文件夹:
对于 Windows:

  • 文件夹或文件路径长度超过 247 个字符。
  • 文件名称长度超过 255 个字符。

看了但没用上

30 年前的技术债引发 win11 离奇 bug ,微软不敢修!
请教一下,windows 系统变量字符过长有什么好的解决方案!

更新日志

2026-03-21 第一版
2026-03-19 开始写


欢迎关注我的频道: https://t.me/fengwq