zoukankan      html  css  js  c++  java
  • bat删除多少天前的文件包含子目录

    通过 Forfiles 删除指定目录下过期的备份文件

    /*-- 用法详解

    D:/>forfiles /?

     

    FORFILES [/P pathname] [/M searchmask] [/S]

             [/C command] [/D [+ | -] {yyyy-MM-dd | dd}]

     

    描述 :

        选择一个文件 ( 或一组文件 ) 并在那个文件上

        执行一个命令。这有助于批处理作业。

     

    参数列表 :

        /P    pathname      表示开始搜索的路径。默认文件夹是当前工作的

                            目录 (.) 。

     

        /M    searchmask    根据搜索掩码搜索文件。默认搜索掩码是 '*' 。

     

        /S                  指导 forfiles 递归到子目录。像 "DIR /S" 。

     

        /C    command       表示为每个文件执行的命令。命令字符串应该

                             用双引号括起来。

     

                            默认命令是 "cmd /c echo @file" 。下列变量

                            可以用在命令字符串中 :

                            @file    - 返回文件名。

                            @fname   - 返回不带扩展名的文件名。

                            @ext     - 只返回文件的扩展。

                            @path    - 返回文件的完整路径。

                            @relpath - 返回文件的相对路径。

                            @isdir   - 如果文件类型是目录,返回 "TRUE" ;

                                       如果是文件,返回 "FALSE" 。

                            @fsize   - 以字节为单位返回文件大小。

                             @fdate   - 返回文件上一次修改的日期。

                            @ftime   - 返回文件上一次修改的时间。

     

                            要在命令行包括特殊字符,字符请以 0xHH

                            形式使用十六进制代码 ( 例如, x09 为 tab) 。

                            内部 CMD.exe 命令前面应以 "cmd /c" 开始。

     

        /D    date           选择文件,其上一次修改日期大于或等于 (+) ,

                            或者小于或等于 (-) 用 "yyyy-MM-dd" 格式指定的日期 ;

                            或选择文件,其上一次修改日期大于或等于 (+)

                            当前日期加 "dd" 天,或者小于或等于 (-) 当前

                            日期减 "dd" 天。有效的 "dd" 天数可以是

                             0 - 32768 范围内的任何数字。如果没有指定,

                            "+" 被当作默认符号。

     

        /?                  显示帮助消息。

     

    例如 :

        FORFILES /?

        FORFILES

        FORFILES /P C:/WINDOWS /S /M DNS*.* 

           -- 显示 C:/WINDOWS 目录及子目录下 DNS 开头的所有文件名

        FORFILES /S /M *.txt /C "cmd /c type @file | more"

           -- 显示当前目录下所有 TXT 文件的内容

        FORFILES /P C:/ /S /M *.bat 

           -- 显示 C 盘目录下及子目录下所有文件后缀名为 bat 的文件名

        FORFILES /D -30 /M *.exe

           -- 显示当前目录下修改日期小于等于天前的 exe 文件名

                 /C "cmd /c echo @path 0x09 在 30 前就被更改。 " 

                      -- 显示当前目录下所有文件的完整路径并在后面追加 ‘ 在 30 前就被更改 ’ 的文字

        FORFILES /D 2001-01-01 

           -- 显示当前目录下修改日期大于等于 -01-01 的文件名 ( 含文件夹名 )

                 /C "cmd /c echo @fname 在 2001 年月日就是新的。 " 

                      -- 显示当前目录下所有文件名并在后面追加 ‘ 在 30 前就被更改 ’ 的文字

        FORFILES /D +2009-8-18 /C "cmd /c echo @fname 今天是新的。 "

           -- 显示当前目录下修改日期大于等于 -8-18 的文件名并在后面追加 ‘ 今天是新的 ’ 的文字

        FORFILES /M *.exe /D +1 

           -- 显示当前目录下修改日期大于等于明天的 exe 文件名

        FORFILES /S /M *.doc /C "cmd /c echo @fname @fsize" 

           -- 显示当前目录及子目录下所有 doc 文件的文件名和文件大小

        FORFILES /M *.txt /C "cmd /c if @isdir==FALSE notepad.exe @file"

           -- 打开当前目录下 txt 文件,不含子文件。 ( 注意变量 isdir 后面的 FALSE 必须为大写 )

     */

     

    目的:删除目录E: /sqldataup 中5天前的 . bak 文件:

    步骤:

    1 、定义 FORFILES 批处理脚本如下:

    C: /> FORFILES /P E:sqldataup / M *. bak / C "cmd /C del /Q @path" / d -5

    如果执行成功则返回当前盘符 C: /> 。

    -- 如果没有需要删除的文件则返回信息错误 : 用指定的搜索标准没有找到文件。比如:

    --C:/>FORFILES /P i:/sqldataup /M *.bak /C "cmd /C del /Q @path" /d -5

    -- 错误 : 用指定的搜索标准没有找到文件

  • 相关阅读:
    [ jquery 选择器 :hidden ] 此方法选取匹配所有不可见元素,或者type为hidden的元素
    剑指 Offer 03. 数组中重复的数字 哈希
    LeetCode 1736. 替换隐藏数字得到的最晚时间 贪心
    Leetcode 1552. 两球之间的磁力 二分
    Leetcode 88. 合并两个有序数组 双指针
    LeetCode 1744. 你能在你最喜欢的那天吃到你最喜欢的糖果吗?
    LeetCode 1743. 相邻元素对还原数组 哈希
    LeetCode 1745. 回文串分割 IV dp
    剑指 Offer 47. 礼物的最大价值 dp
    剑指 Offer 33. 二叉搜索树的后序遍历序列 树的遍历
  • 原文地址:https://www.cnblogs.com/mobox/p/8994163.html
Copyright © 2011-2022 走看看