以下是一个例子:
有4个文件:
C:\Test\1002.bak -- Created on Oct 2nd,2014
C:\Test\1009.bak -- Created on Oct 9th,2014
C:\Test\subfolder\1001.bak -- Created on Oct 1st,2014
C:\Test\subfolder\1008.bak -- Created on Oct 8th,2014我想要一个批处理文件来删除按日期排序的旧文件,所有文件都包括子文件夹。
应该将其分类如下:
C:\Test\subfolder\1001.bak
C:\Test\1002.bak
C:\Test\subfolder\1008.bak
C:\Test\1009.bak 但是,如果我运行下面的命令,则结果将由子文件夹分隔。例如,"dir /a-d /od /s > result.txt“
result.txt:
Volume in drive C has no label.
Volume Serial Number is AADB-DB05
Directory of c:\test
2014/10/02 11:40 4,220,416 1002.bak
2014/10/09 07:02 1,453,321,216 1009.bak
2014/10/09 18:44 0 result.txt
3 File(s) 1,457,541,632 bytes
Directory of c:\test\subfolder
2014/10/01 10:51 4,220,416 1001.bak
2014/10/08 07:02 1,418,283,008 1008.bak
2 File(s) 1,422,503,424 bytes
Total Files Listed:
5 File(s) 2,880,045,056 bytes
0 Dir(s) 35,598,852,096 bytes freedir /a-d /od /s /b> result.txt
result.txt:
c:\test\1002.bak
c:\test\1009.bak
c:\test\result.txt
c:\test\subfolder\1001.bak
c:\test\subfolder\1008.bak是否可以按日期对包括所有子文件夹在内的所有文件进行排序,然后在此文件夹磁盘大小达到限制时删除旧文件?谢谢你的帮助。
发布于 2014-10-09 10:52:30
@echo off
set "targetFolder=%cd%"
for /f "skip=4 tokens=2,*" %%a in ('
robocopy "%targetFolder%" "%targetFolder%" /l /nocopy /is /s /njh /njs /ndl /nc /ns /ts
^| sort /R
') do echo del "%%b"此代码使用robocopy命令(在windows和更高版本中本机,可供以前版本下载)不是复制文件,而是获取带有yyyy/mm/dd hh:nn:ss格式时间戳的文件列表。此列表按降序(sort /r)排序,并跳过列表中的第一个(新的)文件(skip=4)。对于列表中的其余元素,将执行del命令。
del操作只回显到控制台。如果输出正确,请删除echo命令
https://stackoverflow.com/questions/26275599
复制相似问题