自动创建计划任务之删除7天以前的备份文件批处理

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:
由于我的公司游戏(露娜luna)服务器太多,之前建立的每日备份日志文件日积月累会
很大。
而且不需要保留那么多,按公司要求只需要保留一个星期的即可。
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命令详细解释可以参见微软的
http://technet.microsoft.com/zh-cn/cc772785(WS.10).aspx#BKMK_create
附件中有我实际操作的批处理供 下载
 

本文转自 idyllic_cyty 51CTO博客,原文链接:http://blog.51cto.com/aizzw/171183

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
批处理,自动备份文件。
批处理,自动备份文件。
|
NoSQL Shell MongoDB
liunx定时备份mongo数据库并实现自动删除N天前备份
liunx定时备份mongo数据库并实现自动删除N天前备份
100 0
VBS实现批量重命名文件并且操作前备份原有文件
'=========================================================================='' VBScript Source File -- Created with SAPIEN Technologies PrimalScript 4.
932 0
|
MySQL 关系型数据库 数据库
MySql数据库批量备份命令
rd d:\mysql_data-BAK /s /qmd d:\mysql_data-BAKxcopy d:\mysql_data d:\mysql_data-BAK /e
1443 0
|
关系型数据库 Linux Shell
Confluence 6 用户提交的备份和恢复脚本
下面的代码是用户提交的,在使用的时候需要小心,因为 Atlassian 不提供这些代码的技术支持。如果你在使用或者修改这些代码的时候有任何问题,请粘贴到 post them to Atlassian Answers。
1388 0
|
关系型数据库 MySQL 数据库
下一篇
无影云桌面