bat脚本 定时删除备份的文件
删除 D:\yswbak 目录下rar类型 6天前的 文件
@echo off
forfiles /p D:\yswbak /m *.rar /d -6 /c "cmd /c del @path"
1、在批处理文件中,如果命令前加@,表示这条命令不打印出来,只把结果打印出来,即@是关闭命令本身的回显
2、::在批处理中表示注释某一行
3、ECHO ON表示接下来的命令中(不包括本命令),执行命令前会先把命令打印出来
ECHO OFF表示接下来的命令中(不包括本命令),只打印执行结果,不打印命令本身
@ECHO OFF表示接下来的命令中(包括本命令),只打印执行结果,不打印命令本身
4、命令echo XXX中,XXX是结果,echo XXX是命令本身
FORFILES
forfiles [/p Path ] [/m SearchMask ] [/s ] [/c Command ] [/d [{+ | - }] [{MM / DD / YYYY | DD }]]
forfiles是一款windows平台的软件工具,其中选择文件并运行一个命令来操作文件。
文件选择标准包括名称和上次修改日期。
它可以直接在命令行中使用,也可以在批处理文件或其他脚本中使用。
该forfiles命令最初作为加载项提供在Windows NT 资源工具包中。它成为Windows Vista的标准实用程序,作为新管理功能的一部分。
用法
forfiles命令有几个命令行选项。如果没有给出选项或参数,它将输出当前目录中每个文件的名称。
说明:
/p 指定的路径
/s 包括子目录,默认情况下,仅搜索单个指定目录。
/m 查找的文件名掩码
/d 指定日期,有绝对日期和相对日期, 此处-7指当前日期 的7天前
/c 运行的命令行 表示为每个文件执行的命令。命令字符串应该用双引号括起来。
默认命令是 "cmd /c echo @file"。
下列变量可以用在命令字符串中:
@file - 返回文件名。
@fname - 返回不带扩展名的文件名。
@ext - 只返回文件的扩展。
@path - 返回文件的完整路径。
@relpath - 返回文件的相对路径。
@isdir - 如果文件类型是目录,返回 "TRUE";如果是文件,返回 "FALSE"。
@fsize - 以字节为单位返回文件大小。
@fdate - 返回文件上一次修改的日期。
@ftime - 返回文件上一次修改的时间
日期语法
date参数可以作为文字日期给出, 格式 [/d [{+ | - }] [{MM / DD / YYYY | DD }]]
其中MM / DD / YYYY 是指定的日期,DD 是当前日期减去DD 天
如果date参数以减号( - )开头,则仅选择在给定日期或之前修改的文件(较旧的文件/先前修改过)。
否则,仅选择在给定日期或之后修改的文件(较新的文件/稍后修改)。可以给出显式加号(+),但这是默认值。
请注意,两种模式都在给定日期选择文件。无法仅在给定日期选择文件(也不在之前或之后)。
示例:
删除D:\db_bak目录下(包含子目录)20天之前的rar文件,请键入:
forfiles /p "D:\db_bak" /s /m *.rar /d -20 /c "cmd /c del @path"
要列出 C: 上 1993 年 1 月 1 日以前创建的所有文件,并显示“file is quite old!”,请键入:
forfiles /p c:/ /s /m *.* /d t-01011993 /c "cmd /c echo @file is quite old!"
列出驱动器C: 上的所有批处理文件,请键入:
forfiles /p c:/ /s /m *.bat /c "cmd /c echo @file is a batch file"
列出驱动器 C: 上的所有目录,请键入:
forfiles /p c:\ /s /m*.* /c"cmd /c if @isdir==true echo @file is a directory"