You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PowerShell中对含DDMMYYYY日期戳的文件名按时间排序?

解决PowerShell中按文件名内嵌日期排序的问题

针对文件名格式为N_DDMMYYYY.txt的文件排序需求,核心是提取文件名中的日期字符串并转换为DateTime对象,以此作为排序依据,而非依赖文件创建时间或字符串排序。

具体实现代码

# 替换为你的文件所在路径
$targetPath = "C:\统计文件"

Get-ChildItem -Path $targetPath -Filter "*.txt" | 
    Sort-Object -Property @{
        # 提取并转换日期为DateTime对象,作为第一排序键
        Expression = {
            # 正则匹配提取DDMMYYYY部分
            $dateSegment = $_.Name -replace '^\d+_(\d{8})\.txt$', '$1'
            # 按指定格式解析为日期
            [DateTime]::ParseExact($dateSegment, 'ddMMyyyy', $null)
        }
    }, @{
        # 提取主机编号并转为整数,作为第二排序键(同一日期下按主机号排序)
        Expression = {
            [int]($_.Name -replace '^(\d+)_.*$', '$1')
        }
    } | Select-Object -ExpandProperty Name

代码说明

  1. 日期提取与转换:通过正则表达式^\d+_(\d{8})\.txt$匹配文件名,捕获_后的8位日期字符串,再用ParseExact按ddMMyyyy格式解析为DateTime对象,确保排序遵循真实日期逻辑。
  2. 主机号排序:提取_前的主机编号并转为整数,避免字符串排序导致的10排在2之前的问题。
  3. 输出文件名:通过Select-Object -ExpandProperty Name仅输出排序后的文件名列表,若需要完整文件对象可移除该部分。

内容的提问来源于stack exchange,提问作者Al_1-103

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 04:20:07