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

标签 windows sorting batch-file timestamp dir

我想使用 DIR 按时间戳对以下文件进行排序,该时间戳在文件名中定义 - 最旧的在前: 时间戳 = YYYYDDMM

NAME_20121410.dat
NAME_20121509.dat
NAME_20121609.dat

结果应如下所示:

NAME_20121509.dat
NAME_20121609.dat
NAME_20121410.dat

如何用一行代码实现这一目标?

最佳答案

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

@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
)

关于windows - 使用 Windows DIR 命令按时间戳对文件进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12494219/

相关文章:

windows - 如何关闭 Delphi ListView 上的热跟踪?

windows - 当 Pageant 完成加载 SSH key 时运行批处理文件

c# DataGridView 绑定(bind)到 DataTable - 如何将字符添加到双列?

windows - 批处理脚本中 Set/p 的默认值

c++ - 如何在不显示控制台的情况下调用 _wsystem?

python - 当多个 python 版本时,在 Windows 上 pip installwheel

python - 我安装了matplotlib

C# 如何禁用本地用户帐户的交互式登录。类似于网络服务帐户

应用程序中的 ios-thread 1 exc_bad_instruction 错误

MySQL:如何总结行的值并对结果进行排序?