zoukankan      html  css  js  c++  java
  • 批处理实现自动删除过期文件的定期操作

    工作需要,每固定周期需要登录服务器固定目录删除过期日志文件,无奈想了如下批处理(可以通过任务计划 定期执行)的办法实现:
    执行后会在相同目录下生成日志文件:DelExpiredLog.log现实执行的起始时间点。
    @echo off
    rem write to log
    set filename=DelExpiredLog.log
    echo -------------------Delete Expired Log Files------------------------- >>%filename%
    echo Start >>%filename%
    echo (%date% %time%) >>%filename%
    echo Delete the expired log files in 目标目录路径1, Please wait... >>%filename%
    forfiles  /p "目标目录路径1" /m *.* /d -3 /c "cmd /c del @path"
    echo Delete the expired log files in 目标目录路径2, Please wait... >>%filename%
    forfiles  /p "目标目录路径2" /m *.* /d -3 /c "cmd /c del @path"
    echo End >>%filename%
    echo (%date% %time%) >>%filename%
    exit

    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
    形式使用十六进制代码(例如,0x09 为 tab)。
    内部 CMD.exe 命令前面应以 "cmd /c" 开始。

    /D date 选择文件,其上一次修改日期大于或等于 (+),
    或者小于或等于 (-) 用 "yyyy-MM-dd" 格式指定的日期;
    或选择文件,其上一次修改日期大于或等于 (+)
    当前日期加 "dd" 天,或者小于或等于 (-) 当前
    日期减 "dd" 天。有效的 "dd" 天数可以是
    0 - 32768 范围内的任何数字。如果没有指定,
    "+" 被当作默认符号。

    /? 显示帮助消息。

    例如:
    FORFILES /?
    FORFILES
    FORFILES /P C:WINDOWS /S /M DNS*.*
    FORFILES /S /M *.txt /C "cmd /c type @file | more"
    FORFILES /P C: /S /M *.bat
    FORFILES /D -30 /M *.exe
    /C "cmd /c echo @path 0x09 在 30 前就被更改。"
    FORFILES /D 2001-01-01
    /C "cmd /c echo @fname 在 2001年1月1日就是新的。"
    FORFILES /D +2006-11-25 /C "cmd /c echo @fname 今天是新的。"
    FORFILES /M *.exe /D +1
    FORFILES /S /M *.doc /C "cmd /c echo @fsize"
    FORFILES /M *.txt /C "cmd /c if @isdir==FALSE notepad.exe @file"

    删除三十天前的文件forfiles /p "d:108" /s /m *.* /d -30 /c "cmd /c del @path"
  • 相关阅读:
    xls与csv文件的区别
    青音,经典爱情语录
    win7用户账户自动登录方法汇总
    How to using Procedure found Lead Blocker
    FTS(3) BSD 库函数手册 遍历文件夹(二)
    FTS(3) BSD 库函数手册 遍历文件夹(一)
    DisplayMetrics类 获取手机显示屏的基本信息 包括尺寸、密度、字体缩放等信息
    About App Distribution 关于应用发布
    FTS(3) 遍历文件夹实例
    OpenCV 2.1.0 with Visual Studio 2008
  • 原文地址:https://www.cnblogs.com/tonykan/p/5417172.html
Copyright © 2011-2022 走看看