bat使用forfiles自动批量删除过期文件
ftp服务器用于保存备份文件,但是也不需要每天的数据都留着,于是乎为了考虑节省硬盘空间,就必须删除一些老文件,只要保存最近一周或者一个月的就可以了
windows自带了一个批量删除的程序,叫做forfiles,XP里貌似没有,博文最下面附件可以下载
首先说一下我的应用吧,ftp服务器端每天备份数据文件后,只想保存最近两周的文件
编写一个bat文件,内容如下
写道
@echooff remwritetolog setfilename=deletefile.log echo-------------------DeleteExpiredLogFiles------------------------->>%filename% echoStart>>%filename% echo(%date%%time%)>>%filename% echoDeletetheexpiredlogfilesin目标目录路径1,Pleasewait...>>%filename% forfiles.exe/p"D:\Kugou"/m*.tar/d-14/c"cmd/cdel@path" echoEnd>>%filename% echo(%date%%time%)>>%filename%
关键命令就这一条了:forfiles.exe/p"D:\Kugou"/m*.tar/d-14/c"cmd/cdel@path"
这条命令的意思就是,搜索D:/Kugou目录下的任意后缀名为tar的文件,查看其日期属性是否为14天之前的(-14表示之前,+14表示之后),然后执行删除命令
一开始一直在纠结这日期格式是怎么弄的,是不是forfiles是通过匹配文件名来删除的,结果一直在改文件名的日期显示格式,后来才发现偶智商如此低下,人家forfiles是windows自带的,尼玛明显能够智能的匹配文件日期属性啊。
所以说,只要这个文件的日期属性是14天之前的,就会被上述脚本删除。
然后在添加任务计划。。。
下面帖一下forfiles的参数用法
Forfiles
从文件夹或树中选择要进行批处理的文件。
语法
forfiles[/pPath][/mSearchMask][/s][/cCommand][/d[{+|-}][{MM/DD/YYYY|DD}]]
参数
/pPath
指定Path,表明要从哪里开始搜索。默认的文件夹是当前工作目录,该目录通过键入句号(.)指定。
/mSearchMask
按照SearchMask搜索文件。默认的SearchMask是*.*。
/s
指示forfiles在子目录中搜索。
/cCommand
在每个文件上运行指定的Command。带有空格的命令字符串必须用引号括起来。默认的Command是"cmd/cecho@file"。
/d[{+|-}][{MM/DD/YYYY|DD}]
选择日期大于或等于(+)(或者小于或等于(-))指定日期的文件,其中MM/DD/YYYY是指定的日期,DD是当前日期减去DD天。如果未指定+或-,则使用+。DD的有效范围是0-32768。
/?
在命令提示符下显示帮助。
注释
• Forfiles最常用于批处理文件中。
• Forfiles/s与dir/s类似。
• 下表列出了可在/cCommand命令字符串中使用的变量。
变量 描述
@file
文件名
@fname
无扩展名的文件名
@ext
文件扩展名
@path
文件的完整路径
@relpath
文件的相对路径
@isdir
如果文件类型是目录,则计算值为TRUE,否则值为FALSE
@fsize
用字节表示的文件大小
@fdate
文件中上次修改的日期戳
@ftime
文件中上次修改的时间戳
• 使用forfiles,可以在多个文件上运行命令或将参数传递给多个文件。例如,可以在树中带有*.txt扩展名的所有文件上运行TYPE命令。或者,可以用文件名“Myinput.txt”作为第一个参数,在C:/驱动器上执行每个批处理文件(*.bat)。
• 通过使用forfiles,可以执行下列任何操作:
• 使用/d按照绝对或相对日期选择文件。
• 使用诸如@fsize(文件大小)和@fdate(文件日期)这样的变量构建文件的存档树。
• 使用@isdir变量区分文件和目录。
• 通过在命令行中包含特殊字符和使用十六进制代码0xHH环绕字符来格式化输出内容。
• Forfiles通过在旨在仅处理单个文件的工具上执行“循环子目录”标记来发挥作用。
示例
要列出驱动器C:上的所有批处理文件,请键入:
forfiles/pc://s/m*.bat/c"cmd/cecho@fileisabatchfile"
要列出驱动器C:上的所有目录,请键入:
forfiles/pc://s/m*.*/c"cmd/cif@isdir==trueecho@fileisadirectory"
要列出驱动器C:上存在时间多于100天的所有文件,请键入:
forfiles/pc://s/m*.*/dt-100/c"cmd/cecho@file:date>=100days"
要列出驱动器C:上1993年1月1日以前创建的所有文件,而且对于日期早于1993年1月1日的文件显示“fileisquiteold!”,请键入:
forfiles/pc://s/m*.*/dt-01011993/c"cmd/cecho@fileisquiteold!"
要按列格式列出驱动器C:上所有文件的扩展名,请键入:
forfiles/pc://s/m*.*/c"cmd/cechoextensionof@fileis0x09@ext0x09"With:
要列出驱动器C:上的所有批处理文件,请键入:
forfiles/pc://s/m*.bat/c"cmd/cecho@fileisabatchfile"
要列出驱动器C:上的所有目录,请键入:
forfiles/pc://s/m*.*/c"cmd/cif@isdir==trueecho@fileisadirectory"
要列出驱动器C:上存在时间多于100天的所有文件,请键入:
forfiles/pc://s/m*.*/dt-100/c"cmd/cecho@file:date>=100days"
要列出驱动器C:上1993年1月1日以前创建的所有文件,而且对于日期早于1993年1月1日的文件显示“fileisquiteold!”,请键入:
forfiles/pc://s/m*.*/dt-01011993/c"cmd/cecho@fileisquiteold!"
要按列格式列出驱动器C:上所有文件的扩展名,请键入:
forfiles/pc://s/m*.*/c"cmd/cechoextensionof@fileis0x09@ext0x09"
批处理命令之forFiles.exe(32/x64)下载:https://www.nhooo.com/softs/498793.html