在Windows Server上快速部署定时任务删除日志文件指北

不怎么操作Window服务器,也没写过Window Server上定时任务bat脚本,去网上Search发现一堆没有条理的介绍,要不就是介绍bat的语法,要不就是意图不明的设置截图,我就是想清个日志,我这辈子可能就用这么一次,我并不想有太多心智负担。

如果你也跟我一样,那么希望你看到这篇笔记后不再为此伤神。

第一部分 快速部署

一、背景说明
1、环境
Window Server 2016
2、目标
定时删除服务器C盘上IIS服务产生的日志文件,仅保留当天的文件【每天0:40分执行】

二、bat脚本【先不用看懂,后面原理部分会有说明】
1、创建脚本文件
在C盘新建目录Task, 在目录下新建文件TimerClearIISLog.bat

2、用记事本打开,写入清理命令

:: 清理IIS日志文件
@echo off
title 清理IIS日志文件

:: IIS日志文件目录
set log_dir="C:\inetpub\logs\LogFiles"

:: 保留日志天数
set keep_days=1

:: 删除日志文件
forfiles /p %log_dir% /s /d -%keep_days% -c "cmd /c del @file /f"

三、部署定时任务
1、在服务器桌面点击【Windows管理工具】,在工具列表选择【任务计划程序】

2、创建任务
2.1、在常规Tab下设置任务的基本信息

2.2、在触发器Tab下设置任务的执行周期

2.3、在操作Tab下选择执行的bat脚本

3、修改任务
修改或删除任务,只需要在任务列表选择任务,右键属性即为修改,删除即为删除

第二部分 原理说明

一、上面bat脚本中基本命令
1、@
执行的时候不显示后面的命令,有点类似PHP中错误控制运算符@, 放在表达式前面屏蔽发生的错误

2、echo
一个开关有on/off两种状态,控制是否显示后面的命令本身

3、::
注释,类似Go/PHP中的//

4、set
变量赋值,取值通过%变量名%

5、forfiles
选择一个文件夹,或一组文件,对其执行制定的命令,删除/拷贝等

基本参数

forfiles /p <目标目录名> /d <天数> /c <执行的命令>

# 删除一天前的文件
forfiles /p "D:\salmonl" /s /d -1 -c "cmd /c del @file /f"

查看帮助文档

forfiles /?

注:/d后面的参数只能是到某一天,不能到小时及一下,/d “-2021-04-01” 同 /d -1

二、bat常用命令

参考:
bat 批处理教程
知乎:“批处理从入门到精通”,我都应该看些什么书籍?
易佰教程:批处理简介

发表评论

电子邮件地址不会被公开。 必填项已用*标注