使用Windows DIR命令按时间戳对文件进行排序

时间:2012-09-19 11:56:01

标签: windows sorting batch-file timestamp dir

我想用DIR按照时间戳对DIR进行排序,时间戳在文件名中定义 - 最早的第一个: 时间戳= YYYYDDMM

NAME_20121410.dat
NAME_20121509.dat
NAME_20121609.dat

结果应如下所示:

NAME_20121509.dat
NAME_20121609.dat
NAME_20121410.dat

如何使用单线程实现这一目标?

2 个答案:

答案 0 :(得分:3)

由于日期格式很愚蠢,您需要首先拆分文件名并对重新排列的名称进行排序。
不是一个班轮,但它可以工作(在批处理文件中)。

@echo off
(
  for %%A in (*_*.dat) do @(
    call set "name=%%A"
    call set "nameDate=%%name:*_=%%"
    call set "Year=%%nameDate:~0,4%%"
    call set "Day=%%nameDate:~4,2%%"
    call set "Month=%%nameDate:~6,2%%"
    call echo %%Year%%%%Month%%%%Day%% %%name%%
  )
) | sort | (
  for /F "tokens=1,*  delims= " %%A in ('more') DO @echo %%B
)

答案 1 :(得分:2)

如果您可以使用PowerShell,请尝试以下方法:

PS II> ls *.dat | sort {$_ -replace '(\d{2})(\d{2})\.*','$2$1'}