请问按时间删除大量文件有什么好点的办法?

某目录有50W+的大量100K左右的小文件,请问怎么才能按照选择的时间段或保留最近30天等删除其余文件?
一般文件少,我可以直接在文件管理器里排序删除,但是现在几十万的文件,好不容易排序完成,全选会导致卡机。
如果用Windows自带搜索功能,按日期搜索,感觉效率太低,而且也无法全选。
去找了一下好像没有专门的删除软件。
想过用其他文件管理器,比如TC,也只有搜索,搜索出来的几十万个文件删除也怕卡死。
觉得用批处理在DOS下执行,可能效率要高点,但是编程都忘得差不多了。
所以,就想问问,有没什么软件能指定定时间段删除文件,同时对正在运行的系统影响最小,或是有没有其他更好的办法处理?
谢谢~

可以考虑这样的思路:

Belvedere – 自动分拣文件

Limagito Lite – 智能移动文件

先将文件自动移动到不同的文件夹,比如以 月 为文件夹,这样删除起来就轻松多了。

注意上面两个链接比较古老,可能需要寻找一阵子了。

系统自带的XCOPY,或者更强大的ROBOCOPY

xcopy /?
robocopy /?

补充:
复制需要保留的文件到其他位置然后命令行删除原目录
如果删少留多的话,
可以用ROBOCOPY将需删除的文件移动到别的位置再集中删除

如果删除的筛选条件太复杂的话,可以用everything
搜索→结果列表→导出txt→加工成批处理

1 个赞

everything 搜索

然后筛选后删除即可.

如果要是定期运行.
写个批处理命令就好. 然后放到计划任务里,就可以定期执行了.

@echo off 
setlocal ENABLEDELAYEDEXPANSION 
for /f "tokens=*" %%f in ('dir /b/s') do @if "%%~tf" equ "2016-12-30 09:00" del "%%f" /q

这是删除当前文件夹下<2016-12-30 09:00>创建的文件.

你可以根据自己的情况自行修改, 但是由于删除是危险操作,确实要删除的话, 请先做好备份再测试…

感谢大家的回复,我主贴没说太明白,目前的情况是,该目录每天会生成1K-2K个文件,现在大概有60W左右的文件,之前想过用一些备份软件,按天备份打包成压缩文件,删除原文件,这样一年也才300多个文件。后头去找了一些备份软件,没找到好用的。现在想想没必要,就保留最近30天或60天的文件就行。
@11164 你给的方法很好, 我觉得用批处理,然后加计划任务自动执行比较方便。只是不知道批处理有没相关的函数保留最近的文件,编程这块丢了太久都不太会了,麻烦帮我看看,我也去查查相关的资料。
感谢。

windows命令行有个forfiles命令,能够指定时间范围等条件来批量操作文件。一般滚动删除日志或备份都可以用它。

楼主如果想用备份软件的话,我用过Cobian Backup,这个是免费的,并且功能比较全,完全能达到你的要求,就是很久没更新了。我在网上还看到别人推荐duplicati,也是可以滚动式备份的,并且支持比较多的云端存储。

1 个赞

以前也看过rar的命令行,大致浏览了一下,好像没找到相关的参数。
现在用 forfiles 命令解决了,再次感谢各位。

可以用rar的命令行或者7zip的.

事实上, 这些软件的命令行模式非常强大,完全可以满足你的需求.

而且winrar有中文帮助, 有非常详细的命令行参数介绍.

结合上述的批处理即可满足你的需求. 这不是什么编程问题. 自己研究下即可.

1 个赞