0

我想创建一个批处理文件,它将对目录中的文件(基于创建日期)进行排序,并且只保留 x 个最新文件。

这些文件的名称中也有一个日期/时间(即file201208140322),所以如果可以通过将当前日期/时间与子字符串进行比较来做到这一点,我也对此持开放态度。

有人可以帮我执行命令吗?感谢您的帮助。

4

1 回答 1

2

您可以使用DIR /O-D /B /A-D获取按修改时间降序排序的文件列表,然后将此命令的输出提供给FOR /F以便您可以处理这些文件。使用SET /A您可以增加一个计数器来跟踪我们到目前为止看到的文件数量,并且在此计数器达到某个阈值后,您可以开始删除所有后续条目。

这是一个执行此操作的批处理文件:

@ECHO OFF
SETLOCAL
SET PROCESSED_COUNT=0
SET SKIP_FIRST=5
SET START_PROCESSING=0
FOR /F %%f IN ('dir /o-d /b /a-d') DO CALL :process %%f
ENDLOCAL
GOTO :eof

:process
IF %PROCESSED_COUNT%==%SKIP_FIRST% SET START_PROCESSING=1
SET /A PROCESSED_COUNT=%PROCESSED_COUNT% + 1
IF %START_PROCESSING%==0 GOTO :eof
ECHO Delete file #%PROCESSED_COUNT%: %1
GOTO :eof

这个主题还有其他可能的变化,所以上面不是唯一的解决方案。

于 2012-08-14T21:46:36.833 回答