如何使用Windows命令行删除指定目录中特定创建日期的所有文件?
如何使用Windows命令行删除指定目录中特定创建日期的所有文件?
别急,这种批量删文件的糟心事我碰到过好几次,Windows自带的工具完全能搞定,不用怕复杂,我给你说两种靠谱的方法,你选顺手的来:
方法一:用命令提示符(CMD)的forfiles工具
这是Windows原生的批量文件处理工具,专门对付这种资源管理器扛不住的大量文件场景。
步骤:
- 先确定你要删除的文件的创建日期格式:打开CMD,输入下面的命令(把路径换成你的Documents文件夹),看看输出的日期是什么格式:
forfiles /P "C:\Users\你的用户名\Documents" /M *.* /C "cmd /c echo @fdate"
比如输出是05/20/2024(月/日/年),那你的目标日期就得写成这个格式;如果是2024-05-20(年-月-日),就对应调整。
- 测试命令(非常重要!先确认要删的文件对不对):把目标日期填进去,把
del @path换成echo @path,这样只会输出要删除的文件路径,不会真删:
forfiles /P "C:\Users\你的用户名\Documents" /S /M *.* /C "cmd /c if @fdate=='05/20/2024' echo @path"
参数说明:
/P:指定要操作的目录(你的Documents路径)/S:递归处理子文件夹(如果那些垃圾文件在子文件夹里也有的话)/M *.*:匹配所有类型的文件/C:执行后面的CMD命令,判断文件的创建日期(@fdate)是否等于目标日期,是的话就输出路径
- 确认没问题后,把
echo @path改成del @path,执行删除:
forfiles /P "C:\Users\你的用户名\Documents" /S /M *.* /C "cmd /c if @fdate=='05/20/2024' del @path"
如果要连当天创建的空文件夹也一起删,可以把del @path换成if @isdir==TRUE rd @path else del @path。
方法二:用PowerShell(可能更直观)
如果你对PowerShell不排斥,这个方法的逻辑更清晰,处理大量文件也很稳:
- 先测试(同样先看要删的文件):
Get-ChildItem "C:\Users\你的用户名\Documents" -Recurse -File | Where-Object {$_.CreationTime.Date -eq (Get-Date "2024-05-20")} | Select-Object FullName
参数说明:
Get-ChildItem:获取指定目录下的所有文件-Recurse:递归子文件夹-File:只处理文件(如果要删文件夹,去掉这个参数,后面改成Remove-Item -Recurse -Force)Where-Object:过滤出创建日期等于目标日期的文件Select-Object FullName:输出文件的完整路径
- 确认后执行删除:
Get-ChildItem "C:\Users\你的用户名\Documents" -Recurse -File | Where-Object {$_.CreationTime.Date -eq (Get-Date "2024-05-20")} | Remove-Item -Force
如果要删除当天创建的文件夹,把命令改成:
Get-ChildItem "C:\Users\你的用户名\Documents" -Recurse | Where-Object {$_.CreationTime.Date -eq (Get-Date "2024-05-20")} | Remove-Item -Recurse -Force
重要提醒:
- 一定要替换命令里的
你的用户名和目标日期,别直接抄例子! - 千万先测试,确认输出的文件都是你要删的那些,再执行删除命令,避免误删重要文件
- 因为文件有200多万,命令执行会需要一段时间,别中途中断,耐心等它跑完就行
备注:内容来源于stack exchange,提问作者ulfelder




