![]() |
Модераторы: korob2001, ginnie |
![]() ![]() ![]() |
|
heluna |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 5.8.2008 Репутация: нет Всего: нет |
Я хочу написать скрипт, который рекурсивно пробегает все элементы (каталоги и файлы) открытого каталога DIR (C:/programme/dir).
И сортирует их по времени последней модификации. Все элементы, которые больше года не открывались, нужно перенести в новый каталог BACKUP (C:/programme/backup/dir) и стереть в старом DIR. Ко всему этому надо создать текстовый файл (liste.txt), где будут выписаны все удалённые элементы с текущей директории и их качества:
размер в KB(sizeDir, sizeFile)) время, когда последний раз пользовались файлом/папкой(lastMod) я уже не знаю, сколько раз я начинала переписывать этот скрипт, но ни к чему умному я не пришла, причём я в самом деле инвестировала много времени ))) ![]() Может у кого было что-то подобное....подскажите как это осуществить... Буду благодарна любой помощи!!.....................................!! пока я только умудрилась, выдать в текстовом файле все элементы текущей директории, потом я хотела вывести размеры в КБ, но выдача получается неправильной.......................
|
|||
|
||||
amg |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 38 Всего: 50 |
Для начала:
|
|||
|
||||
heluna |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 5.8.2008 Репутация: нет Всего: нет |
Ок, сортировать, то он их сортирует, а как эту дату и размер потом в текстовом файле выдать?
|
|||
|
||||
heluna |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 5.8.2008 Репутация: нет Всего: нет |
наконетц-то допёрла как выдать в текстфайле размеры элементов
Вот мой код:
как выдать это дело в такой форме например... C:/Users/cthdev34/Desktop/man Размер: 28.022 KB Время последней модификации:31.08.2007 17:46 ============= Active.css Größe ---> Датай Размер: 15.22 KB Время последней модификации:24.08.2007 18:46 Liste.txt Größe ---> Датай Размер: 0.002 KB Время последней модификации:28.03.2007 15:46 images Größe ---> Каталог ============= C:/Users/cthdev34/Desktop/man/images Размер: 2.21 KB Время последней модификации:31.08.2007 17:00 ============= activeperl_logo.gif ---> Датай Размер: 0.69 KB Время последней модификации:31.08.2007 17:46 Code.gif ---> Датай Размер: 1.52 KB Время последней модификации:31.08.2007 17:46 ============= На данный момент моя запись в файле выглядит так: C:/Users/cthdev34/Desktop/man--->Размер: 28.022 KB ============= Active.css Размер: 15.229022 KB images Размер: 2.21206024433023 KB Liste.txt Размер: 0.00221206024433023 KB ============= C:/Users/cthdev34/Desktop/man/images--->Размер: 2.21000221206024 KB ============= activeperl_logo.gif Размер: 0.69821000221206 KB Code.gif Размер: 1.52024433022902 KB ============= как округлить числа до 2-ой десятой??? Ну и конечно же хотелось бы знать, можно ли этому тексту передать ту форму, которую я сама записала выше. С датой и временем что-то вообще труба, чем дальше в лес, тем больше дров.... |
|||
|
||||
amg |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 38 Всего: 50 |
heluna, не все понятно. Поясните, пожалуйста,
1. Зачем сортировать файлы по времени? Что с сортированным списком делать? Вы же понимаете, напечатать этот список в том виде, в каком Вы предложили в своем последнем посте, не получится. И по какому времени? Есть время последнего доступа (кто-то просмотрел файл, не не правил его), есть время последней модификации. 2. Переместить старые файлы и создать лог-файл об этом -- это понятно. А что делать с директориями, которые после перемещения оказались пустыми? Оставлять или удалять? 3. Насколько я понял, Вы сами парсите файловую систему. Зачем тогда File::Find? Что касается Ваших вопросов о размере файла и времени, то вот в качестве примера:
|
|||
|
||||
heluna |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 5.8.2008 Репутация: нет Всего: нет |
спасибо за ответ amg))))
поясняю... 1. нет, мне было это не понятно, до данного момента, что в этом виде этот список нельзя выдать, но это не настоль важно... сортировка нужна для того, что-бы в папке остались только актуальные элементы, это те которые по возврасту меньше года, все те элементы, которые старше года не актуальные и по этому их надо перенести в другую папку, что-бы они не мешались, но на всякий случай их надо сохранить, что-бы можно было в любой момент их опять востановить. Что-бы сразу было видно, какие элементы перенесены в другой орднер, делается список с данными от этих элементов. 2.Вообще структура в Backup должна соответствовать структуре папки, которую проверяю, это значит, если директория осталась пустой, то в старой папке её надо стереть, но в новую папку перенести.......(я надеюсь, я понятно выразилась) 3.Зачем File:Find не знаю видела пару примеров и решила их под свой подделать........это моя первая программа на перле(как было и не трудно догодаться))))) БОЛьШОЕ СПАСИБО ЗА ПРИМЕР, сейчас буду пробовать....))) |
|||
|
||||
amg |
|
||||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 38 Всего: 50 |
|
||||||
|
|||||||
heluna |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 5.8.2008 Репутация: нет Всего: нет |
проблема в том что в каталоге не только файлы находятся, там ещё и подкаталаги, в которых и подподкаталаги в которых тоже находятся файлы.............................. вот в этом то вся и проблема
Это сообщение отредактировал(а) heluna - 30.3.2010, 15:53 |
|||
|
||||
shamber |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1422 Регистрация: 5.9.2006 Где: Россия Репутация: 17 Всего: 18 |
heluna, а почему проблема? можно ведь и их обходить предложенным amg вариантом
|
|||
|
||||
heluna |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 5.8.2008 Репутация: нет Всего: нет |
а где имено он их там объеденяет????
Ну в общемто, я тоже об этом подумала, и объеденила их, но моя версия намного длиннее, и я не совсем понимаю если честно, в каком месте это делается в скрипте, предложенном amg я это делаю вот так:
неужели это дело можно сделать в двух строках???????????????? |
|||
|
||||
heluna |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 5.8.2008 Репутация: нет Всего: нет |
извеняюсь ступила, я думала, что File::Find можно пользоваться, только если у меня датаи, без папок...... хочу оправдаться, пользуюсь гениальной книжкой, где функция File::Find даже в оглавлении не стоит..................
задам ещё один вопрос)) foreach(@allFiles) { if(-M $_ > 365 ) { push(@Altfile,$_); мove($_,$dirbackup); # $dirbackup это моя новая папка } } почему элементы не переносятся???? и как их в статой папке стереть? |
|||
|
||||
amg |
|
||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 38 Всего: 50 |
|
||||
|
|||||
heluna |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 5.8.2008 Репутация: нет Всего: нет |
Я наконетц-то добила этот скрипт и получила всё что мне надо было, (почти). Я выставлю код, может кому когда-нибудь поможет...
Большое спасибо амг за помощь))
я написала почти.....потому-что в этом месте #leere Ordner löschen foreach my $Ordner(@dirs){rmdir($Ordner);} я пытаюсь стирать пустые папки, что и получается, но только до того момента, когда папка которую изначально пробегаю имеет только одну поддеректорию, если в этих папках находятся дальнейшие папки, то скрипт оставляет их пустыми. Подскажите пожалуйсто, как это дело исправить.... Это сообщение отредактировал(а) heluna - 16.4.2010, 10:47 |
|||
|
||||
heluna |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 5.8.2008 Репутация: нет Всего: нет |
я сама решила эту проблему, выделенную часть кода надо заменить на
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Perl" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |