windows 资源管理器的"按名称排序"对文件名中字母数字混合的数字的处理是什么时候改成现在这个样子的?

2025 年 10 月 8 日
 realpg

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

今天惊奇的发现

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

A123B56.txt
A97B00.txt

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

A 123 B 56
A 97 B 00

按文件升序排列时

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

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

2636 次点击
所在节点    Windows
14 条回复
Ketteiron
2025 年 10 月 8 日
这样的处理是标准的自然排序法,是给正常地球人使用的排序方法,印象中 XP 以后都是这样的,更早的 2000 之前是 ASCII 排序法。
geelaw
2025 年 10 月 8 日
自中古以来就是这样排序的,我自己记不得 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 日
一个叫字典序,不对字符串里的数字做特殊处理。
一个叫自然序,会对字符串里的数字单独排序。
windows 采用自然序的行为,最迟是 win xp 开始采用了。


@geelaw 刚试了下 win98 、ME 虚拟机,还是字典序,XP 已经是自然序了。
realpg
2025 年 10 月 8 日
@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 日
前人可能改 XP 的注册表了
你现在也可以改组策略回退到 2000 之前
qianxuu
2025 年 10 月 8 日
还是会有很多软件像 everything 这样排序,所以一般来说会在数字前面补 0 对齐位数
loli
2025 年 10 月 8 日
有一个专门的 api 是用于干这个的,
我编写相关软件是必用的,否则顺序和资源管理器中不一致时会非常难受
https://learn.microsoft.com/zh-cn/windows/win32/api/shlwapi/nf-shlwapi-strcmplogicalw
上面显示最低支持 XP
realpg
2025 年 10 月 8 日
@Ketteiron #5
破案了 是我的问题

windows 这个排序是没问题的 应该很久了

win11 以后才发现是因为 那个比较特殊的文件格式 win11 可以直接预览了 也可以直接简单打开了 所以诞生了用电脑直接查看这个目录的用法 以前不是这么用的

早期版本是不支持 explorer 预览的, 所以公司的对应部门有个小软件用来实时列表预览 选中 一键发送到目标目录等

那个预览软件是字典序

正常恢复目录后 直接把小软件拷到上层目录运行
geelaw
2025 年 10 月 8 日
@realpg #8 能不能预览是有没有安装预览处理程序的问题(当然你用的软件可能只支持 Windows 11 ),预览处理程序是 Windows Vista 引入的。
realpg
2025 年 10 月 9 日
@geelaw #9
当然我说的能预览指的是 windows 系统自带的程序就处理这个预览了
我并不是专业人员, 没这个软件
这是一种比较特殊的专业图像格式
win11 的系统的自带图片查看就能预览了 很神奇 大概是专利可能过期了
opengps
2025 年 10 月 9 日
学过程序开发都知道,名称是字符串,所以这么排序没啥毛病。如果硬是觉得别扭,那得回顾下数字补全前缀 0 。但程序不是自己写的,又没法这么操作
luzemin
2025 年 10 月 9 日
巧了,那天刚在 hn 上看到:When I say “alphabetical order”, I mean “alphabetical order”

https://sebastiano.tronto.net/blog/2025-09-28-alphabetic-order/


我还专门试了下 Windows 的排序,explorer 中是自然排序,Powershell ls 命令是字典排序
liuidetmks
2025 年 10 月 9 日
最开始时候就应该考虑对齐问题, 缺少直觉
Ketteiron
2025 年 10 月 9 日
@luzemin #12 可以让 ps 的排序与 explorer 一致
https://github.com/LarrysGIT/Powershell-Natural-sort/blob/master/NaturalSort.ps1
这样强迫症就没必要补 0 对齐了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1163737

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX