 |
|
перенос файлов старше н дней
суть:
имеется каталог с большим количеством файлов.
нужно переместить в другое место с сохранением структуры каталога файлы старше н дней/месяцев/лет
результат заархивировать.
не могу разобраться почему 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}
}
|
я бы заюзал для такой задачи:
Код:
robocopy /MIR /MOV /MINAGE:n "D:\test\ГКН" "D:\_BackUp\11\"
rar.exe a arc D:\_BackUp\11\*.*
|
Цитата:
Цитата Опиум
robocopy /MIR /MOV /MINAGE:n "D:\test\ГКН" "D:\_BackUp\11\"
rar.exe a arc D:\_BackUp\11\*.* »
|
не понял, какой параметр отвечает за дату отбора файлов ?
robocopy конечно хорошо, но мне принципиально разобраться почему 2-й пример не желает работать
|
Если данные тестовые, то может быть CreationTime(проверить, что дата подпадает под условие) не подпадать под условие и отсутствует фильтр на исключение папок !$_.PsIsContainer. Можно убрать -Period $Period , т.к. нет такого параметра у фильтра Get-OldFiles. В остальном проблем нет.
|
firstarey,
/MINAGE:n -исключить из обработки файлы моложе n дней.
|
Время: 21:05.
© OSzone.net 2001-