使用 Windows 进行备份,需要备份某一段时间内的文件。但是使用原始的批处理(bat)计算比较麻烦,如之前的文章 forfiles 和 xcopy 在windows下拷贝N天内更改过的文件 。所以寻找了更简单的方法,可以使用 powershell 来计算需要拷贝的文件。脚本编写好后可以使用 Windows 任务计划程序定时执行 powershell 脚本 。
以下为简单的处理脚本:拷贝当天(0天内)1小时内的日志文件到其他目录中
<#
Get-ExecutionPolicy
Set-ExecutionPolicy Unrestricted
Function:拷贝N天或N小时内的文件
Author:hzc
CreateDate: 2016/01/27
#>
$SourceDir = "D:\日志备份"
$DestinationDir = "E:\备份\Log"
$AddDays = 0 #增加的天数,可正可负
$AddHours = -1 #增加的小时,可正可负
$SourceFileArray = Get-ChildItem -Path $SourceDir -Recurse | Where-Object -FilterScript {($_.LastWriteTime -gt (Get-Date).AddDays($AddDays).AddHours($AddHours))} | Select-Object -ExpandProperty Name
$date = Get-Date
Write-Host "$date 拷贝开始……"
foreach ( $file in $SourceFileArray ){
$SourcePath = $SourceDir + "\" +$file
Copy-Item -Path $SourcePath -Destination $DestinationDir
$date = Get-Date
Write-Host "$date 完成:" + $SourcePath
}
$date = Get-Date
Write-Host "$date 拷贝完成!"
其实还可以设置更精确,参考函数:AddYears、AddMonths、AddDays、AddHours、AddMinutes、AddSeconds、AddMilliseconds、AddTicks
本文介绍如何利用Powershell脚本自动化Windows系统备份,通过编写简单的脚本来拷贝当天1小时内更改的日志文件到其他目录,并使用Windows任务计划程序定时执行此脚本。
3423

被折叠的 条评论
为什么被折叠?



