windows bat命令删除某天前的文件

2020-06-28

forfiles

参数:

/p 指定目录,默认是当前工作目录:forfiles /p “C:\Users\gtja\Desktop\1016”
/s 递归到子目录
/m 文件查找所使用的通配符,默认为*.*;如:*.log(所有日志文件),aaa_*.*.log(以aaa开头的日志文件)
/d 指定一个日期或天数(以当天为基础);-7表示7天前; -08/18/2009 早于2009年8月18日的文件,指定的时间必须是"MM/DD/YYYY"的格式。 
/c 对所有文件执行要执行的命令,需用“”括起来 ,如“cmd /c del” 表示执行cmd的del命令

变量:

@file - 返回文件名。
@fname - 返回不带扩展名的文件名。
@ext - 只返回文件的扩展名。
@path - 返回文件的完整路径。
@relpath - 返回文件的相对路径。
@isdir - 如果文件类型是目录,返回 "TRUE";如果是文件,返回 "FALSE"。
@fsize - 以字节为单位返回文件大小。
@fdate - 返回文件上一次修改的日期。
@ftime - 返回文件上一次修改的时间。

删除文件

@ echo off
#将当前目录要删除的文件名(以2008开头的文件 7天前)追加到del.txt中
forfiles /p ./ /s /m 2008*.* /d -7 /c "cmd /c echo @file>>.\del.txt"
#删除当前目录下的文件(以2008开头的文件 7天前)
forfiles /p ./ /s /m 2008*.* /d -7 /c "cmd /c del @path"

删除空白目录

方式1:
#将空白目录名重定向到d:\kill.txt
dir /ad /b /s E:\1\ |sort /r > d:\kill.txt
#循环删除
For /f "tokens=*" %%i in (d:\kill.txt) DO rd "%%i" 
del d:\kill.txt

方式2:
For /f "tokens=*" %%i in ('dir /ad/b/s D:\test\ ^|sort /r') DO rd "%%i" 

/ad 表示显示目录
/b 只显示文件夹名称
/s 查找当前文件夹及其所有的子文件夹
Sort 排序
/r 表示逆序排列
^  表示转义,不转义 | 会报错
注:命令行中将 %%i 改为 %i,否则会报错

文章来源于:https://www.cnblogs.com/joeshang/p/10487154.html

{/if}