您的位置:首页 > 运维架构 > Shell

PowerShell 拷贝某段时间内的文件

2016-01-27 10:45 323 查看
使用 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: