Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - перенос файлов старше н дней

Ответить
Настройки темы
PowerShell - перенос файлов старше н дней

Пользователь


Сообщения: 102
Благодарности: 8

Профиль | Отправить PM | Цитировать


суть:
имеется каталог с большим количеством файлов.
нужно переместить в другое место с сохранением структуры каталога файлы старше н дней/месяцев/лет
результат заархивировать.

не могу разобраться почему 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}
}

Отправлено: 13:15, 10-06-2015

 

Ветеран


Сообщения: 547
Благодарности: 36

Профиль | Сайт | Отправить PM | Цитировать


я бы заюзал для такой задачи:
Код: Выделить весь код
robocopy /MIR /MOV /MINAGE:n  "D:\test\ГКН" "D:\_BackUp\11\"
rar.exe a arc D:\_BackUp\11\*.*

-------
консольный клиент telegram для Windows: www.elapser.info

Это сообщение посчитали полезным следующие участники:

Отправлено: 13:58, 10-06-2015 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 102
Благодарности: 8

Профиль | Отправить PM | Цитировать


Цитата Опиум:
robocopy /MIR /MOV /MINAGE:n "D:\test\ГКН" "D:\_BackUp\11\"
rar.exe a arc D:\_BackUp\11\*.* »
не понял, какой параметр отвечает за дату отбора файлов ?

robocopy конечно хорошо, но мне принципиально разобраться почему 2-й пример не желает работать

Отправлено: 14:18, 10-06-2015 | #3


Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить PM | Цитировать


Если данные тестовые, то может быть CreationTime(проверить, что дата подпадает под условие) не подпадать под условие и отсутствует фильтр на исключение папок !$_.PsIsContainer. Можно убрать -Period $Period , т.к. нет такого параметра у фильтра Get-OldFiles. В остальном проблем нет.
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:31, 10-06-2015 | #4


Ветеран


Сообщения: 547
Благодарности: 36

Профиль | Сайт | Отправить PM | Цитировать


firstarey,

/MINAGE:n -исключить из обработки файлы моложе n дней.

-------
консольный клиент telegram для Windows: www.elapser.info


Отправлено: 14:45, 10-06-2015 | #5



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - перенос файлов старше н дней

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
PowerShell - [решено] Перенос файлов старше N дней pogo Скриптовые языки администрирования Windows 16 19-08-2014 16:49
Любой язык - [решено] Удаление файлов старше N дней DOCznet Скриптовые языки администрирования Windows 2 27-09-2012 11:42
VBS/WSH/JS - [решено] Удаление файлов по сети старше 7 дней, оставлять не менее 10 файлов white155 Скриптовые языки администрирования Windows 6 04-01-2012 00:42
[решено] Автоочистка файлов, старше 5 дней. Universal_gr Программное обеспечение Linux и FreeBSD 1 01-10-2010 01:12
Прочее - удаление файлов старше 10 дней admin666 Общий по Linux 1 23-07-2009 19:09




 
Переход