firstarey
10-06-2015, 13:15
суть:
имеется каталог с большим количеством файлов.
нужно переместить в другое место с сохранением структуры каталога файлы старше н дней/месяцев/лет
результат заархивировать.
не могу разобраться почему 2-й вариант не отрабатывает.
может подскажет кто?
вариант 1 - рабочий:
$Months = 11
$path = "D:\test\ГКН"
$dest = "D:\_BackUp\11\"
Get-ChildItem -Path $path -recurse | where {
write-host "Move File: "$_.DirectoryName$_ -foregroundcolor "Yellow"
$_.LastWriteTime -le ((Get-Date).AddMonths(-$Months)) -and !$_.PsIsContainer
} | Move-Item -Destination {
md $_.DirectoryName.Replace("$path","$dest") -force
}
вариант 2 - НЕ рабочий:
Param (
#период в днях старше которого файл считается пригодным к удалению
[int]$Period = 100 ,
#каталог просмотра
[String]$PATH = "D:\test\ГКН" ,
#каталог назначения
[String]$DEST = "D:\_BackUp\11\" ,
#включать ли вложенные каталоги
[bool]$recurse = $true
)
filter Get-OldFiles {
if (([DateTime]::Now.Subtract($_.CreationTime)).Days -gt $Period) {
write-host "Move File: "$_ -foregroundcolor "Yellow"
return $_
}
}
if ($recurse) {
dir -path $PATH -recurse `
| Get-OldFiles -Period $Period `
| Move-Item -Destination {md $_.DirectoryName.Replace("$PATH","$DEST") -force}
} else {
dir -path $PATH `
| Get-OldFiles -Period $Period `
| Move-Item -Destination {md $_.DirectoryName.Replace("$PATH","$DEST") -force}
}
имеется каталог с большим количеством файлов.
нужно переместить в другое место с сохранением структуры каталога файлы старше н дней/месяцев/лет
результат заархивировать.
не могу разобраться почему 2-й вариант не отрабатывает.
может подскажет кто?
вариант 1 - рабочий:
$Months = 11
$path = "D:\test\ГКН"
$dest = "D:\_BackUp\11\"
Get-ChildItem -Path $path -recurse | where {
write-host "Move File: "$_.DirectoryName$_ -foregroundcolor "Yellow"
$_.LastWriteTime -le ((Get-Date).AddMonths(-$Months)) -and !$_.PsIsContainer
} | Move-Item -Destination {
md $_.DirectoryName.Replace("$path","$dest") -force
}
вариант 2 - НЕ рабочий:
Param (
#период в днях старше которого файл считается пригодным к удалению
[int]$Period = 100 ,
#каталог просмотра
[String]$PATH = "D:\test\ГКН" ,
#каталог назначения
[String]$DEST = "D:\_BackUp\11\" ,
#включать ли вложенные каталоги
[bool]$recurse = $true
)
filter Get-OldFiles {
if (([DateTime]::Now.Subtract($_.CreationTime)).Days -gt $Period) {
write-host "Move File: "$_ -foregroundcolor "Yellow"
return $_
}
}
if ($recurse) {
dir -path $PATH -recurse `
| Get-OldFiles -Period $Period `
| Move-Item -Destination {md $_.DirectoryName.Replace("$PATH","$DEST") -force}
} else {
dir -path $PATH `
| Get-OldFiles -Period $Period `
| Move-Item -Destination {md $_.DirectoryName.Replace("$PATH","$DEST") -force}
}