不怎么操作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管理工具】,在工具列表选择【任务计划程序】
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常用命令