最近在处理如何通过批处理的方式定期的删除服务器上面的日志文件,所以对相关的知识积累了一下。
删除30天前的所有文件
forfiles /p e:/logs /s /m *.* /d -2 /c "cmd /c del @file"
forfiles:的命令使用说明(可以在CMD命令行界面输入forfiles /? forfiles可以查询到使用说明)
/p 指定的路径
/s 包括子目录
/m 查找的文件名掩码
/d 指定日期,有绝对日期和相对日期, 此处-7指当前日期 的7天前
/c 运行的命令行 表示为每个文件执行的命令。命令字符串应该
用双引号括起来。
默认命令是 "cmd /c echo @file"。下列变量
可以用在命令字符串中:
@file - 返回文件名。
@fname - 返回不带扩展名的文件名。
@ext - 只返回文件的扩展。
@path - 返回文件的完整路径。
@relpath - 返回文件的相对路径。
@isdir - 如果文件类型是目录,返回 "TRUE";
如果是文件,返回 "FALSE"。
@fsize - 以字节为单位返回文件大小。
@fdate - 返回文件上一次修改的日期。
@ftime - 返回文件上一次修改的时间。
下面是清理IIS日志文件的批处理操作的示例,可以通过设置IIS日志文件目录和保留日志天数进行清理日志文件
------------------------------------------------------------------
:: 清理IIS日志文件
@echo off
title 清理IIS日志文件
:: IIS日志文件目录
set log_dir="C:\log"
:: 保留日志天数
set bak_dat=268
:: 删除日志文件
forfiles /p %log_dir% /S /M *.log /D -%bak_dat% /C "cmd /c echo 正在删除@relpath 文件… & echo. & del @file"
------------------------------------------------------------------