利用PS脚本自动删除7天之前建立的目录-方法1!

来源:互联网 发布:专业气象软件 编辑:程序博客网 时间:2024/04/30 18:48

目前有一个备份目录,目录名称为d:\temp\bak目录,在这目录下,根据备份要求,自动生成了如下目录的列表:

20131012

20131011

20131010

20131009

20131008

20131007

.............

现在需要自动删除7天之前的目录,只保留最近一周的目录备份数据。


当然删除方式有很多种方法,我们这里先讲下这个我们目前采用的方法,先把脚本写出来,我们根据脚本进行分析:


param
(
$removepath="d:\temp\bak",

#设定需要自动删除的目录
$logfilepath="d:\log\remove.log"

#制定删除文件的动作日志写入文本文件
)
$KeepDate=&{(Get-Date).tostring("yyyyMMdd"),(Get-Date).adddays(-1).tostring("yyyyMMdd"),(Get-Date).adddays(-2).tostring("yyyyMMdd"),(Get-Date).adddays(-3).tostring("yyyyMMdd"),(Get-Date).adddays(-4).tostring("yyyyMMdd"),(Get-Date).adddays(-5).tostring("yyyyMMdd"),(Get-Date).adddays(-6).tostring("yyyyMMdd")}

#这里将保留的周期求出来,(get-date) 求出来当前的时间,(get-date).adddays(-1) 求出的是昨天的日期,(get-date).adddays.tostring("yyyyMMdd")是将时间转换成年月日的时间的字符串,求出来的字符串将是{20131012,20131011,...}
$RemoveDirectorys=Get-ChildItem -Path $removepath -Exclude $KeepDate

#得出除了保留了目录之外的其他目录或者文件
if(!(test-path $logfilepath))

#判断是否存在日志文件,这里是不存在的意思
{
New-Item -ItemType file -Path $logfilepath

#新建一个文件,文件名称为相应的文件
}

foreach($RemoveDirectory in $RemoveDirectorys)

#根据得出的目录进行循环
{

$removestring="位于"+$removepath+"的"+$RemoveDirectory.name+"目录于"+(Get-Date).tostring("yyyy年MM月dd日HH时mm分ss秒")+"被删除"

#计算需要在日志中记录的日志的内容
Remove-Item -Path $RemoveDirectory.fullname -force -Recurse

#依据循环的文件集合删除当前的目录

if($?)

#如果命令执行成功,则执行如下语句!
{
$removestring |Out-File -Append -filepath $logfilepath

#以追加的方式将日志写入日志文件
}

}


OK ,上面就是执行过程的解释,我们来看一个例子,图片如下:

接下来我们执行下这个脚本:

执行完成后,我们发现目录和文件已经被删除:

在日志文件中呢,我们能够很明显的看到日志记录的内容:



原创粉丝点击