|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Перенос файлов старше N дней |
|
|
PowerShell - [решено] Перенос файлов старше N дней
|
Старожил Сообщения: 208 |
Доброго времени суток!
Накидал скрипт из пары строк, который должен пройтись по папки и если к файлу последний раз обращались больше чем N дней, он переносится в др папку, но скрипт не работает не поминая почему... Если указывать сравнение "ge", то он начинает всё(!) переносить, если "le" (по идее то что мне и надо), вообще ничего не происходит. Подскажите пожалуйста в чём ошибся? Заранее спасибо! |
|
Отправлено: 10:21, 15-08-2014 |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать А вывод, что показывает?
Get-ChildItem $path | Format-Table lastaccess*,name -Auto И за одно посмотреть, не отключено ли обновление данного атрибута(вроде начиная с Vista отключено по умолчанию): fsutil behavior query DisableLastAccess |
Отправлено: 10:36, 15-08-2014 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 208
|
Профиль | Отправить PM | Цитировать Вывод Вашей команды:
Цитата:
Подскажите пожалуйста как это побороть? |
|
Отправлено: 10:51, 15-08-2014 | #3 |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать Move-Item -Destination {md $_.DirectoryName.Replace("$path","$dest") -force}
|
Отправлено: 10:54, 15-08-2014 | #4 |
Старожил Сообщения: 208
|
Профиль | Отправить PM | Цитировать Большое спасибо!!
Как раз то что надо. Можете подсказать, у сего действия имеется какой-то ограниченный уровень вложенности? Сейчас попробовал, и получил не мало подобных ошибок: Цитата:
|
||
Отправлено: 11:20, 15-08-2014 | #5 |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать Да, он выдает ошибки на папки, поэтому исключите их.
where { $_.LastAccessTime -le ((Get-Date).AddDays(-5)) -and !$_.PsIsContainer} |
Отправлено: 11:21, 15-08-2014 | #6 |
Старожил Сообщения: 208
|
Профиль | Отправить PM | Цитировать Цитата Kazun:
Просто мне надо перенести всё что старше N дней из папки в папку. |
|
Отправлено: 11:29, 15-08-2014 | #7 |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать Будут только файлы, сам объект папки будет исключен, т.е файлы расположенные в этой будут попадать под перемещение.
|
Отправлено: 11:31, 15-08-2014 | #8 |
Старожил Сообщения: 208
|
Профиль | Отправить PM | Цитировать Извините за назойливость, просто хочется окончательно разобраться.
Получается что благодаря этой конструкции: Move-Item -Destination {md $_.DirectoryName.Replace("$path","$dest") -force} все файлы будут переносится с автоматическим сохранением и созданием структуры папок в папке назначения. И данная конструкция не умеет переносить папки, по этому мы их исключаем из переноса? Я правильно понял? |
Отправлено: 11:35, 15-08-2014 | #9 |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать Немного не так.
Для исключения папок мы используем атрибут PsIsContainer. PS > dir Каталог: C:\1 Mode LastWriteTime Length Name ---- ------------- ------ ---- d---- 15.08.2014 11:36 1 d---- 15.08.2014 11:36 2 d---- 15.08.2014 11:36 3 -a--- 15.08.2014 11:36 8 1.txt PS C:\1> dir | Where {$_.PsIsContainer} Каталог: C:\1 Mode LastWriteTime Length Name ---- ------------- ------ ---- d---- 15.08.2014 11:36 1 d---- 15.08.2014 11:36 2 d---- 15.08.2014 11:36 3 PS C:\1> dir | Where {!$_.PsIsContainer} Каталог: C:\1 Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 15.08.2014 11:36 8 1.txt Можно переносить и папки, но для случая когда у папки LastAccessTime подходит под условие, а все файлы внутри свежие, что у Вас предусмотрено? |
Отправлено: 11:42, 15-08-2014 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
2012 R2 - [решено] Удаление файлов старше 100 дней | DJ Mogarych | Windows Server 2012/2012 R2 | 6 | 07-06-2014 02:16 | |
Любой язык - [решено] Удаление файлов старше 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 |
|