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"

posted @ 2019-11-07 10:51  吉连  阅读(482)  评论(0编辑  收藏  举报