Войти

Показать полную графическую версию : [решено] Удаление файлов


ags555
21-09-2009, 22:54
Здравствуйте!!!
На этом форуме совсем не давно поэтому сразу извиняюсь за возможно не корректные вопросы!!!
Нужно организовать удаление файлов 2-х недельной давности!!!
Суть: у нас настроенно архивное капирование которое каждый день в час ночи создаёт архивы с названием текушей системной даты т.е. например 19.09.2009.zip и так соответственно на каждый день 20.09.2009.zip, 21.09.2009.zip и т.д!!!
Нужен скрипт или на BAT или на CMD или на VBS или на WHS который бы вслед за этим заданием запускался просматривал папку с архивами и если там находил файлы 2-х недельной давности от текущей системной даты то удалял бы их!!!
Сам разобраться не смог, прошу помощи!!! Тут наверно нужно организовать просмотр файлов или по названию или по дате создания!!!

amel27
22-09-2009, 04:03
ags555, вариант на VBS:
strRoot = "C:\Backup" ' Путь к каталогу с архивами
strMask = "^(\d{2}\.){2}\d{4}\.zip$" ' Маска имени ZIP-файлов
intWeek = 2 ' Время хранения файла (в неделях)

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objRegExp = CreateObject("VBScript.RegExp")
Set objRoot = objFSO.GetFolder(strRoot)
Set colFiles = objRoot.Files

objRegExp.Pattern = strMask
objRegExp.IgnoreCase = True

For Each objFile In colFiles
If objRegExp.Test(objFile.Name) And _
DateDiff("w", objFile.DateLastModified, Date)>=intWeek Then
objFile.Delete
End If
Next

ags555
22-09-2009, 17:56
Спасибо за то что откликнулись amel27, !!!
Попробую!!!
Разъясните что значит конструкция "^(\d{2}\.){2}\d{4}\.zip$" поподробнее, как я понял она отвечает за маску по которой будут фильтроваться файлы. Чтобы потом можно было самому задавать разные маски!!! Т.е. в зависимости от того какое имя у файла соответственно програмка судит следует его удалять или нет??? Правильно???

А параметр intWeek = 2 отвечает за давность??? Правильно??? т.е. если intWeek = 3 то програмка будет искать за 3 недели соответственно!!!

amel27
23-09-2009, 10:08
что значит конструкция "^(\d{2}\.){2}\d{4}\.zip$" »

^ начинаем проверку с начала строки
( начало блока
\d{2} два знака "цифра"
\. один знак "точка"
){2} конец блока, блок должен примениться дважды
\d{4} четыре цифры
\.zip расширение ".zip"
$ тут строка должна закончиться

полностью эквивалентная, но более простая маска: "^\d\d\.\d\d\.\d\d\d\d\.zip$"
для справки: http://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D1%8B%D0%B5_%D0%B2%D1%8B%D1%80%D0%B0%D0%B6%D0%B5%D0 %BD%D0%B8%D1%8F
т.е. если intWeek = 3 то програмка будет искать за 3 недели соответственно »3 недели и более

vitaliyboch
23-09-2009, 14:02
Уже есть решение этого вопроса http://forum.oszone.net/thread-146190.html зачем писать сто раз одну и ту же проблему? Поиск по форуму использовать не судьба?

ags555
28-09-2009, 20:54
Спасибо за разъяснения amel27, !!!
А вас vitaliyboch, попрошу не разглогольствовать бестолку!!!




© OSzone.net 2001-2012