现在 win11 的行为是: 把文件名中出现的连续数字 作为一个整体数值 按照数值大小比较处理排序
今天惊奇的发现
比如一个文件夹中有以下文件名的文件
A123B56.txt
A97B00.txt
在按文件名排序(升序或者降序)时 他会把这个主文件名当作四个"排序单位"进行比较
A 123 B 56
A 97 B 00
按文件升序排列时
因为 97<123 第二个文件会排到第一个前面
历史庞大的数据归档文件夹里为了兼容以前旧的历史数据(完全按位 ascii 比较)设计的文件夹架构 全乱套了
![]() |
1
Ketteiron 7 小时 24 分钟前
这样的处理是标准的自然排序法,是给正常地球人使用的排序方法,印象中 XP 以后都是这样的,更早的 2000 之前是 ASCII 排序法。
|
![]() |
2
geelaw 7 小时 21 分钟前
自中古以来就是这样排序的,我自己记不得 Windows 98 的行为了,但根据 https://devblogs.microsoft.com/oldnewthing/20080804-00/?p=21383 的链接可以知道 2006 年的 Windows 已经对数字有特殊处理了,也就是至少 Windows XP 开始就是这样了。
根据 CompareString 的文档,至少从 Windows 95, Windows NT 3.1 开始就已经有不区分平假名和片假名的选项了,而且简体中文和繁体中文的规则也很不同(只有繁体中文会用笔画数)。总之,简单的答案是:Explorer 的 UI 排序是非常复杂的字符串比较。 用 ASCII 排序应该已经很久没有在 Windows 下 work 过了,普通用户并不期待 A-0.txt Z-1.txt a-2.txt 这样的顺序。 |
![]() |
3
AV1 7 小时 4 分钟前
一个叫字典序,不对字符串里的数字做特殊处理。
一个叫自然序,会对字符串里的数字单独排序。 windows 采用自然序的行为,最迟是 win xp 开始采用了。 @geelaw 刚试了下 win98 、ME 虚拟机,还是字典序,XP 已经是自然序了。 |
![]() |
4
realpg OP PRO @Ketteiron #1
@geelaw #2 @AV1 #3 回头我找找做个测试 说实话我从来没关注过这玩意 这边是有一份 windows 的按目录备份的海量数据备份文件, 这是一个排序第五的备份方式了, 很靠后的, 平时根本用不到, 因为涉及超级重要的数据所以独立备份方式很多, 做了加密后文件用六种方式备份到了超过 30 个地方 里面的目录层级结构就是按照 ascii 比较的方式设计的目录名 然后现在拷回到 windows 11 下 目录排序全乱(近百万小文件按目录组织) 因为这个备份规则也不是我们这一代人定的, 前人的规范文本上说的就是因为目录排序原因要求这么命名方便排序 直接进目录查找 我简单举例吧 做一点脱敏 找类似方便理解的内容替换 规范要求的目录命名大致是这样的 [发票-2010OLDER] ...... [发票-2021_1] [发票-2021_2] [发票-2021_3] [发票-2021_4] ...... [发票-20241202] [发票-20241203] [发票-20241204] [发票-20241205] [发票-20241206_01] [发票-20241206_02] [发票-20241206_03] [发票-20241209~20241227] [发票-20241230_01] [发票-20241230_02] [发票-20241230_03] [发票-20241230_04] [发票-20241230_05] [发票-20241231_01] [发票-20241231_02] [发票-20241231_03] [发票-20241231_04] [发票-20241231_05] [发票-20241231_06] [发票-202501] [发票-202502] [发票-202503_1] [发票-202503_2] [发票-202503_3] [发票-202503_4] [发票-202503_5] 我不认为前人定这个标准 当时的 windows 排序会乱 当然我也没能力找到前人 这就很奇妙的冲突 让我认为是最近 windows 才改成这样 因为设计这个标准的年份应该是 XP 时代了 而且运行了这么多年 虽然好像从来没启用过这个备份数据用作查找, 但是生成这个目录结构时候应该可以发现排序跟预期不符 也没人提过 |
![]() |
5
Ketteiron 6 小时 33 分钟前
|
![]() |
6
qianxuu 6 小时 17 分钟前
|
7
loli 5 小时 56 分钟前
有一个专门的 api 是用于干这个的,
我编写相关软件是必用的,否则顺序和资源管理器中不一致时会非常难受 https://learn.microsoft.com/zh-cn/windows/win32/api/shlwapi/nf-shlwapi-strcmplogicalw 上面显示最低支持 XP |