批处理文件,如果超过10

时间:2017-08-01 07:23:35

标签: windows batch-file directory

我想创建一个批处理文件(.bat),如果文件夹超过10个,可以删除文件夹文件夹中的最新文件夹。如果这是目录树:

\My Folders\
... \Old Videos\        (Created 2 Hours Ago)
... \Files\             (Created Last Month)
... \Pics\              (Created Last Week)
... \Powerpoints\       (Created Yesterday)
... \Videos\            (Created Several Days Ago)
... \Old Pics\          (Created Yesterday)
... \Movies\            (Created Yesterday)
... \Games\             (Created Yesterday)
... \Old Files\         (Created Last Month)
... \Downloads\         (Created Two Weeks Ago)
... \New Folder\        (Created Just Now)

因此,此批处理文件在运行时将删除新文件夹(位于底部),因为文件夹中有超过10个文件(不包括子文件夹),并且它是最新的。如果目录树中有12个文件夹(再次,减去子文件夹),批处理文件将删除最新的2个,依此类推。

有没有办法在Win10中执行此操作?我已经搞砸了一下,但是无法做到。

2 个答案:

答案 0 :(得分:3)

dir有很多有用的开关:
/ad仅显示文件夹(无文件)
/od按日期排序(最早的第一个)
/tc采取"创建"日期时间(默认:"最后更改")
/b只显示名称。

放置一个for循环,跳过前10行并完成:

@echo off
cd "My Folders"
for /f "skip=10 delims=" %%a in ('dir /ad /od /tc /b') do ECHO rd /s /q "%%a"
如果输出符合您的要求,请

删除ECHO

答案 1 :(得分:1)

以下批处理脚本将执行您要求的操作:

用法:batch.bat "path\folder with spaces" 11

如果您没问题,可以删除echo命令前面的rd。您还可以扩展它以首先打印列表,然后请用户确认删除它们 此批处理使用dir命令和/O:D选项对日期(最早的第一个)进行排序,/A:D选项仅显示目录,/ TC选项使用创建日期和{ {1}}只是得到名字。

/B命令使用上次写入时间作为默认值,如果要更改使用/ T开关(在technet上描述):

  

dir

     

指定要显示或用于排序的时间字段。以下列表描述了可用于TimeField的每个值:

     

/t[[:]<TimeField>]创作

     

c上次访问

     

a最后写的

w