我想创建一个批处理文件,它将对目录中的文件(基于创建日期)进行排序,并且只保留 x 个最新文件。
这些文件的名称中也有一个日期/时间(即file201208140322),所以如果可以通过将当前日期/时间与子字符串进行比较来做到这一点,我也对此持开放态度。
有人可以帮我执行命令吗?感谢您的帮助。
我想创建一个批处理文件,它将对目录中的文件(基于创建日期)进行排序,并且只保留 x 个最新文件。
这些文件的名称中也有一个日期/时间(即file201208140322),所以如果可以通过将当前日期/时间与子字符串进行比较来做到这一点,我也对此持开放态度。
有人可以帮我执行命令吗?感谢您的帮助。
您可以使用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
这个主题还有其他可能的变化,所以上面不是唯一的解决方案。