@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET /A num=0
FOR /F "tokens=*" %%i in ('dir /A-D /B /OD /TC') DO (
IF NOT "%%i"=="%~n0%~x0" (
SET /A num+=1
REN "%%i" "!num!%%~xi"
)
)
ENDLOCAL
EXIT
文件名通过'dir /A-D /B /OD /TC'列出,其中/OD表示是按时间从先到后排序。如果希望新文件在前,可以用/O-D,负号'-'表示逆序。
另外补充一下,/TC表示按文件创建时间排序。此外还有/TA按上次访问时间和/TC按上次写入时间排序。上次访问时间表示最近一次读取或修改文件的时间,上次写入时间表示最新一次修改文件的时间。
文件名称的列表由DIR /A-D /B /OD /TC给出。现对参数做出解释:
/A 表示筛选,/A-D排除目录
/B 表示只显示文件名,此处为必需参数
/O 表示排序,/OD按时间从先到后排序
/T 表示指定时间排序的标准,/TC采用创建时间
具体细节可以在命令行通过DIR /?获取
大家可根据自己需求自由选择文件的排序方式
常见的排序方式有:
/OD 按时间排序
/OE 按拓展名排序
/ON 按名称排序
/OS 按文件大小排序
加上负号-表示逆序
即/O-D,/O-E,/O-N,/O-S
例子:
代码里面的 FOR /F "tokens=*" %%i in ('dir /A-D /B /OD /TC') DO (
dir /A-D /B /OD /TC' 就是排除文件夹(/A-D),对文件按创建时间(/TC)由先到后排序(/D)。
想改变排序方式,就自己换参数,比如:
按文件大小逆序排列是 dir /A-D /B /O-S
对所有文件和文件夹一起,按名称排序是 dir /B /ON
代码其他部分保持一致。