windows 资源管理器的"按名称排序"对文件名中字母数字混合的数字的处理是什么时候改成现在这个样子的? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
realpg
0.01D
V2EX    Windows

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

  •  
  •   realpg
    PRO
    23 小时 18 分钟前 995 次点击

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

    今天惊奇的发现

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

    A123B56.txt A97B00.txt 

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

    A 123 B 56 A 97 B 00 

    按文件升序排列时

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

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

    14 条回复    2025-10-09 10:44:57 +08:00
    Ketteiron
        1
    Ketteiron  
       23 小时 4 分钟前
    这样的处理是标准的自然排序法,是给正常地球人使用的排序方法,印象中 XP 以后都是这样的,更早的 2000 之前是 ASCII 排序法。
    geelaw
        2
    geelaw  
       23 小时 1 分钟前
    自中古以来就是这样排序的,我自己记不得 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
        3
    AV1  
       22 小时 44 分钟前
    一个叫字典序,不对字符串里的数字做特殊处理。
    一个叫自然序,会对字符串里的数字单独排序。
    windows 采用自然序的行为,最迟是 win xp 开始采用了。


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

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

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

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

    那个预览软件是字典序

    正常恢复目录后 直接把小软件拷到上层目录运行
    geelaw
        9
    geelaw  
       19 小时 41 分钟前
    @realpg #8 能不能预览是有没有安装预览处理程序的问题(当然你用的软件可能只支持 Windows 11 ),预览处理程序是 Windows Vista 引入的。
    realpg
        10
    realpg  
    OP
    PRO
       11 小时 43 分钟前
    @geelaw #9
    当然我说的能预览指的是 windows 系统自带的程序就处理这个预览了
    我并不是专业人员, 没这个软件
    这是一种比较特殊的专业图像格式
    win11 的系统的自带图片查看就能预览了 很神奇 大概是专利可能过期了
    opengps
        11
    opengps  
       10 小时 26 分钟前
    学过程序开发都知道,名称是字符串,所以这么排序没啥毛病。如果硬是觉得别扭,那得回顾下数字补全前缀 0 。但程序不是自己写的,又没法这么操作
    luzemin
        12
    luzemin  
       10 小时 14 分钟前
    巧了,那天刚在 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
        13
    liuidetmks  
       10 小时 12 分钟前
    最开始时候就应该考虑对齐问题, 缺少直觉
    Ketteiron
        14
    Ketteiron  
       8 小时 31 分钟前
    @luzemin #12 可以让 ps 的排序与 explorer 一致
    https://github.com/LarrysGIT/Powershell-Natural-sort/blob/master/NaturalSort.ps1
    这样强迫症就没必要补 0 对齐了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3026 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 22ms UTC 11:16 PVG 19:16 LAX 04:16 JFK 07:16
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86