现在 win11 的行为是: 把文件名中出现的连续数字 作为一个整体数值 按照数值大小比较处理排序

今天惊奇的发现

比如一个文件夹中有以下文件名的文件

A123B56.txt
A97B00.txt

在按文件名排序(升序或者降序)时 他会把这个主文件名当作四个"排序单位"进行比较

A 123 B 56
A 97 B 00

按文件升序排列时

因为 97<123 第二个文件会排到第一个前面

历史庞大的数据归档文件夹里为了兼容以前旧的历史数据(完全按位 ascii 比较)设计的文件夹架构 全乱套了

举报· 1168 次点击
登录 注册 站外分享
10 条回复  
Ketteiron 初学 2025-10-8 20:11:44
这样的处理是标准的自然排序法,是给正常地球人使用的排序方法,印象中 XP 以后都是这样的,更早的 2000 之前是 ASCII 排序法。
geelaw 小成 2025-10-8 20:14:35
自中古以来就是这样排序的,我自己记不得 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 这样的顺序。
AV1 初学 2025-10-8 20:31:54
一个叫字典序,不对字符串里的数字做特殊处理。 一个叫自然序,会对字符串里的数字单独排序。 windows 采用自然序的行为,最迟是 win xp 开始采用了。 @geelaw 刚试了下 win98 、ME 虚拟机,还是字典序,XP 已经是自然序了。
realpg 楼主 小成 2025-10-8 20:37:21
@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 时代了 而且运行了这么多年 虽然好像从来没启用过这个备份数据用作查找, 但是生成这个目录结构时候应该可以发现排序跟预期不符 也没人提过
Ketteiron 初学 2025-10-8 21:02:21
前人可能改 XP 的注册表了 你现在也可以改组策略回退到 2000 之前 https://i.imgur.com/CO7NcvJ.jpeg
qianxuu 初学 2025-10-8 21:18:38
还是会有很多软件像 everything 这样排序,所以一般来说会在数字前面补 0 对齐位数 https://i.imgur.com/tyjEiKj.png
loli 小成 2025-10-8 21:39:11
有一个专门的 api 是用于干这个的, 我编写相关软件是必用的,否则顺序和资源管理器中不一致时会非常难受 https://learn.microsoft.com/zh-cn/windows/win32/api/shlwapi/nf-shlwapi-strcmplogicalw 上面显示最低支持 XP
realpg 楼主 小成 2025-10-8 21:49:54
@Ketteiron #5 破案了 是我的问题 windows 这个排序是没问题的 应该很久了 win11 以后才发现是因为 那个比较特殊的文件格式 win11 可以直接预览了 也可以直接简单打开了 所以诞生了用电脑直接查看这个目录的用法 以前不是这么用的 早期版本是不支持 explorer 预览的, 所以公司的对应部门有个小软件用来实时列表预览 选中 一键发送到目标目录等 那个预览软件是字典序 正常恢复目录后 直接把小软件拷到上层目录运行
geelaw 小成 2025-10-8 23:35:03
@realpg #8 能不能预览是有没有安装预览处理程序的问题(当然你用的软件可能只支持 Windows 11 ),预览处理程序是 Windows Vista 引入的。
12下一页
返回顶部