zoukankan      html  css  js  c++  java
  • 自动创建计划任务之删除7天以前的备份文件批处理

    由于公司服务器太多,之前建立的每日备份日志文件日积月累会

    很大。
    而且不需要保留那么多,按公司要求只需要保留一个星期的即可。
    1.那么有什么方法自动删除7天以前备份的*.log文件呢?
    2.服务器过多,不可能一一手动创建,有没有自动完成这个创建计划任务的批处理呢?
    首先要解决的是自动删除7天以前备份的log文件,然后创建一个可以自动创建一个每
    周指定日期指定时间运行一次该自动删除的批处理
     
    一:删除7天以前备份的文件
    命令
    FORFILES [/P pathname] [/M searchmask] [/S]
             [/C command] [/D [+ | -] {yyyy-MM-dd | dd}]
     
    方法1
    描述:可以删除7天以前的后缀名为log的日志文件。如今天是6.29,那么会删除6.22
    号以前创建的文件。不会删除到回收站。
    指定路径为要删除的文件夹路径,该批处理可以放在任意文件夹下
    forfiles /p D:\aizzw\LOG /m *.log -d -7 /c "cmd /c del /f @path"
    参数解释:
    这里的/p 指的是要删除的备份文件路径
            /m 指的是要匹配的字符,通配符为*号,后缀名可以根据实际情况修改
    如zzw*.log;*.bak;*.txt
    -d 指的是日期,“-d -7”指的是从但前日期当前日期往前减7天。
    /c 指的是执行命令
    @path 返回文件完整路径
    方法2
    描述:可以删除7天以前的后缀名为log的日志文件。
    不需要指定路径,必须放在要删除日志的文件下。删除当前文件夹下的匹配文件。
    forfiles /m *.log -d -7 /c "cmd /c del /f @path"
    以上批处理已经在windows 2003的虚拟机上测试通过
     
    方法3:
    为网友提供,可适用于xp,2000,而forfiles默认只有2003以上的系统才有。
     
    ::删除F:\文件备份里的 7天前的txt文件
    ::被删除的文件日期以文件创建日期为主
    @echo off
    ::取7天之前的日期.
    >deldata_zw.zhu.vbs echo wscript.echo dateadd("d",-7,date)
    for /f "tokens=1,2,3* delims=-" %%i in ('cscript /nologo deldata_zw.zhu.vbs') do (
    set y=%%i
    set m=%%j
    set d=%%k
    )
    if %m% LSS 10 set m=0%m%
    if %d% LSS 10 set d=0%d%
    set rq=%y%-%m%-%d%
    echo 注意:即将删除 %rq% 以前建立的文件
    pause
    ::判断文件
    for /f "skip=4 delims=" %%i in ('dir/tc F:\TEST\*.log') do call :w "%%i"
    del deldata_zw.zhu.vbs
    goto :eof
    :w
    for /f "tokens=4 delims= " %%a in (%1) do set str=%%a
    set var=%1
    set num=%var:~1,10%
    if %num% lss %rq% del /q F:\TEST\%str%
     
     
    二:自动创建每周运行一次的计划任务
    创建计划任务可用at,schtasks命令,schtasks提供了很多参数
    命令schtasks
    SCHTASKS /Create [/S system [/U username [/P [password]]]]
        [/RU username [/RP password]] /SC schedule [/MO modifier] [/D day]
        [/M months] [/I idletime] /TN taskname /TR taskrun [/ST starttime]
        [/RI interval] [ {/ET endtime | /DU duration} [/K] ]
        [/SD startdate] [/ED enddate] [/IT] [/Z] [/F]
    方法
    @echo off
    schtasks /create /tn "Del-7_log" /ru system /tr D:\aizzw\del-7.bat /sc
    weekly /d mon /st 01:00
    start %systemroot%\tasks
    echo 创建成功,请检查...
    pause
    del /f Create.bat
    参数解释:
    schtasks /create 指的是创建计划任务
    /tn 指定计划任务的名称
    /ru 指定运行该批处理的账号,如果去掉该参数则默认为当前账户运行,会提示输入密码。
    一个计划任务所用的账号如果密码变动后该批处理就不再会运行成功
    所以我这里使用系统账号system,密码就省略不写。
    /rp   指定账号的密码
    /tr 指定程序所在路径,这里为指定要执行的批处理存放路径。
    /sc 为指定运行的周期
    /d 为日期.这里mon为英文单词缩写,周一
    /st 为运行时间
    start %systemroot%\tasks 这一句只是为了弹出计划任务窗口查看创建成功与否
    del /f Create.bat 为创建完成后自动删除创建该计划任务的批处理
    schtasks命令详细解释可以参见微软的
  • 相关阅读:
    内存:你跑慢点行不行?CPU:跑慢点你养我吗?内存:我不管!(内附超全思维导图)
    又能扯皮了!没内存了还能看片?
    写给大忙人看的进程和线程
    Python面试常用的高级用法,怎么动态创建类?
    LeetCode 74,直击BAT经典面试题
    LeetCode 73,为什么第一反应想到的解法很有可能是个坑?
    Golang基础教程——map使用篇
    手把手教你学numpy,从此数据处理不再慌【三】
    从辗转相除法到求逆元,数论算法初体验
    深入了解机器学习决策树模型——C4.5算法
  • 原文地址:https://www.cnblogs.com/amylis_chen/p/2820345.html
Copyright © 2011-2022 走看看