zoukankan      html  css  js  c++  java
  • windows下自动删除n天前的文件

    使用windows2003下的内置命令forfiles配合计划任务可以实现自动删除n天前的文件。

    windows2003中设定自动执行的计划任务很简单。

     一、脚本编写

    forfiles命令用法:

    Forfiles

    从文件夹或树中选择要进行批处理的文件。

    语法

    forfiles [/p Path] [/m SearchMask] [/s] [/c Command] [/d[{+ | -}] [{MM/DD/YYYY | DD}]]

    参数

    /p Path
    指定 Path,表明要从哪里开始搜索。默认的文件夹是当前工作目录,该目录通过键入句号 (.) 指定。
    注:绝对路径应该包含在双引号中,且路径应该由反斜杠分割:example:"D:HOMEDesktop62backup"
    /m SearchMask
    按照 SearchMask 搜索文件。默认的 SearchMask 是 *.*
    /s
    指示 forfiles 在子目录中搜索。
    /c Command
    在每个文件上运行指定的 Command。带有空格的命令字符串必须用引号括起来。默认的 Command 是 "cmd /c echo @file"
    /d[{+ | -}] [{MM/DD/YYYY | DD}]
    选择日期大于或等于 (+)(或者小于或等于 (-))指定日期的文件,其中 MM/DD/YYYY 是指定的日期,DD 是当前日期减去 DD 天。如果未指定 + 或-,则使用 +DD 的有效范围是 0 - 32768。
    /?
    在命令提示符下显示帮助。

    注释

    • Forfiles 最常用于批处理文件中。
    • Forfiles /s 与 dir /s 类似。
    • 下表列出了在 /c Command 命令字符串中能够使用的变量。
      变量描述
      @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 通过在旨在仅处理单个文件的工具上执行“循环子目录”标记来发挥作用。

    示例

    自动删除d:/test下超过7天的.bak的文件

    forfiles /p "d:/test" /s /m *.bak /d -7 /c "cmd /c del @path"

    要列出驱动器 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"

    要列出驱动器 C: 上存在时间多于 100 天的所有文件,请键入:

    forfiles /p c:/ /s /m*.* /dt-100 /c"cmd /c echo @file : date >= 100 days"

    要列出驱动器 C: 上 1993 年 1 月 1 日以前创建的文件,而且对于日期早于 1993 年 1 月 1 日的文件显示“file is quite old!”,请键入:

    forfiles /p c:/ /s /m*.* /dt-01011993 /c"cmd /c echo @file is quite old!"

    要按列格式列出驱动器 C: 上所有文件的扩展名,请键入:

    forfiles /p c:/ /s /m*.* /c "cmd /c echo extension of @file is 0x09@ext0x09" With:

    要列出驱动器 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"

    要列出驱动器 C: 上存在时间多于 100 天的所有文件,请键入:

    forfiles /p c:/ /s /m *.* /d t-100 /c "cmd /c echo @file : date >= 100 days"

    要列出驱动器 C: 上 1993 年 1 月 1 日以前创建的文件,而且对于日期早于 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*.* /c "cmd /c echo extension of @file is 0x09@ext0x09"

    格式化图例

    格式含义
    斜体 用户必须提供的信息
    粗体 用户必须准确键入的要显示的元素
    省略号 (...) 在命令行中可多次重复的参数
    中括号 ([]) 可选项
    大括号 ({});选项用竖线 (|) 分隔。例如:{even|odd} 用户必须从选项集合中选择一个
    Courier 字体 代码或程序输出

    二、配置计划任务

      

        开始-->所有程序-->附件-->系统工具-->任务计划程序
     
        任务计划程序(本地)-->任务接话程序库-->创建基本任务-->
     
        输入 名称:  描述:点击下一步
     
        触发器:设置周期
     
        设置详细时间
     
        操作选择 启动程序
     
        选择要执行的bat脚本就是上面所写好的脚本
     
        点击完成
     
        详细的属性,可以勾选则点击完成时弹出属性对话框进行对每一项详细的设置。
      参考:http://www.jb51.net/os/windows/58393.html
      三、验证是否能够成功执行计划任务
      在计划任何的执行界面中配置的启动时间提前当前时间2分钟,待显示上次成功执行(0X0返回码表示成功执行)以后确认定时任务可以成功执行。
    注:(一)在创建计划任务调用的bat文件时可能出现中文乱码现象,原因是在创建bat文件时不是设置的ANSI编码,只有ANSI编码才能支持中文。
      创建支持中文的bat文件的方法:
      1、面对这个情况是编码不同问题,所以在最开始就应该把编码修正,支持中文的编码是ANSI。我们第一步是新建一个txt文件。
      2、然后点击新建的文本文档,然后选择“文件”=》“另存为”
      3、cmd中的编码方式为ANSI,若中文不是此编码方式则会出现乱码。所以我们在编码的时候选择“ANSI”
      4、然后把上面的代码重新输入到我们保存的文件,重名命为.bat的文件
      (二)创建的bat脚本双击执行时只在屏幕一闪而过,不能查看调试时的错误信息解决方法
      1、执行cmd命令
      2、进入到bat文件所在的目录
      3、执行bat文件。bat文件的执行结果就会成功显示在dos界面上,这样可以调试bat脚本和查看脚本中的错误信息,以便修改脚本语句。
  • 相关阅读:
    97. Interleaving String
    96. Unique Binary Search Trees
    95. Unique Binary Search Trees II
    94. Binary Tree Inorder Traversal
    odoo many2many字段 指定打开的form视图
    docker sentry 配置文件位置
    postgres 计算时差
    postgres 字符操作补位,字符切割
    postgres判断字符串是否为时间,数字
    odoo fields_view_get
  • 原文地址:https://www.cnblogs.com/ricksteves/p/11904855.html
Copyright © 2011-2022 走看看