【问题标题】:Manage Windows directory using batch(sorting and deleting)使用批处理(排序和删除)管理 Windows 目录
【发布时间】:2012-08-14 21:26:19
【问题描述】:

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

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

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

【问题讨论】:

  • 你可能会更好地使用 Python 或其他东西...... Windows 中的命令行非常弱......

标签: windows file-io batch-file command


【解决方案1】:

您可以使用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

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

【讨论】:

  • 感谢您的回复。在批处理中我在哪里设置目录?
  • @user1171915:CD 在开头或将路径放在DIR 命令中。如果您愿意,也可以将其设置为变量并将其与"%VARIABLE_NAME%" 一起使用。如果路径包含空格,则引号是必需的。
  • 这是我从 CMD 收到的输出:c:\Users\KJ>MaintainLogs 删除文件 #3:ProcessPercentOwnership201208130951.txt 删除文件 #4:ProcessPercentOwnership201208100951.txt 删除文件 #5:REIDSExport.log c:\Users\a101336>
  • 但是文件没有被删除。我错过了什么吗?
  • @user1171915:我发布的代码没有DEL 命令,它只是打印内容。您必须自己添加。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-22
  • 2012-04-27
  • 2018-07-02
  • 2020-10-29
相关资源
最近更新 更多