如何使用批处理文件自动重命名在Windows上创建的日期的文件排序

问题描述

我的操作系统是Windows

我的文件是:

FILENAME DATECREATED
Jack.txt 3 AM
John.txt 4 AM
Mary.txt 5 AM
Paul.txt 1 AM

因此,如何按使用此模式创建的日期自动重命名文件的批量排序:

预期结果:

FILENAME    DATECREATED
1. Paul.txt 1 AM
2. Jack.txt 3 AM
3. John.txt 4 AM
4. Mary.txt 5 AM
  • Paul.txt更改为“ 1. Paul.txt”,因为此文件首先创建 (上午1点)。
  • Mary.txt更改为“ 4. Mary.txt”,因为此文件 创建最后一个(上午5点)

我听说有一些脚本可以解决此问题,但我不确定也可以

任何帮助将不胜感激

谢谢

解决方法

首先,以正确的顺序获取文件(/od按日期/时间排序,/a-d不包括文件夹名称,/b仅列出文件名。有关详细信息,请参见dir /?详细信息)。
然后为它们编号(通过管道将它们传递到findstr /N。有关详细信息,请参见findstr /?。)
然后使用for /f循环将输出分解为数字和文件名,并根据需要重新组合它们(有关详细信息,请参见for /?

@echo off
for /f "tokens=1,* delims=:" %%a in ('dir /od /a-d /b ^|findstr /N "^"') do ECHO ren "%%b" "%%a. %%b"

注意:我通过回显ren命令撤防了该命令。输出满足您的要求时,只需移除ECHO

,

感谢斯蒂芬给我的启发

这是解决此问题的批处理脚本,

@echo off
for /f "tokens=1,* delims=:" %%a in ('dir /od /a-d /b ^|findstr /N "^"') do ren "%%b" "%%a. %%b"