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

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

Ответить
Настройки темы
VBS/WSH/JS - VBS удаление файлов в папке по определенному имени и дате старше n

Новый участник


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

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


Всем доброго времени суток.
Прошу оказать помощь в написании скрипта на VBS. Сам в VBS к сожалению полный 0. Нужно очистить папку с файлами старых логов.
Сами файлы с расширением .txt и .log и они должны удаляться старше определенной даты.

Пример файлов:
Log_01.02.2017.log удаление старше 15.03.2018
Print_[12052013].txt удаление старше 01.01.2016

Отправлено: 19:01, 23-03-2018

 

Ветеран


Contributor


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

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


Код: Выделить весь код
Call DelOldFile("Z:\Box_In", "^log.*\.log$", "15.03.2018")
Call DelOldFile("Z:\Box_In", "^print_\[.*\.txt$", "01.01.2016")

' ---------------------------------------------------------------------------
Sub DelOldFile(inDir, Msk, sDt)
    dDt = DateValue(sDt)
    
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set Folds = FSO.GetFolder(inDir)
    Set Files = Folds.Files

    Set RegMaska = New RegExp
    RegMaska.Pattern = Msk
    RegMaska.IgnoreCase = True
         
    For Each jf In Files
       If RegMaska.Test(jf.Name) Then
'            If jf.DateCreated < dDt Then
            If jf.DateLastModified < dDt Then
                F = FSO.DeleteFile(jf.Path, True)
            End If
       End If
    Next
End Sub

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 25-03-2018 в 12:40.


Отправлено: 22:15, 23-03-2018 | #2



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

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


Новый участник


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

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


megaloman, Добрый день. Спасибо за ответ. Сам скрипт проверил, но результат он не выдает, а файлы как были так и остались и процесс удаление видимо не срабатывает. Хотя может я сам что то не правильно делаю?

Отправлено: 11:00, 25-03-2018 | #3


Ветеран


Contributor


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

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


Цитата Vooodi4356:
файлы как были так и остались и процесс удаление видимо не срабатывает. Хотя может я сам что то не правильно делаю »
Подозревал, что так и будет. Надеюсь, путь Вы указали свой вместо моего "Z:\Box_In", и правильно. Но загвоздка в другом: я подозреваю, что Вы тестировали скрипт на какой-то тестовой папке, куда скопировали файлы. И тут начинается коллизия: скрипт анализирует дату создания файла If jf.DateCreated. В скопированных сегодня файлах дата создания - сегодняшняя.
В этом можно убедиться, проделав в командном окне команду
dir Z:\Box_In\*.txt /O:D /T:С
Возможно анализировать не дату создания, а дату последней модификации. Эти даты можно увидеть командой
dir Z:\Box_In\*.txt /O:D /T:W
В предыдущем посте я изменил строку.
Код: Выделить весь код
            If jf.DateLastModified < dDt Then

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

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

Отправлено: 12:40, 25-03-2018 | #4


Ветеран


Contributor


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

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


Vooodi4356,
Как вариант, ИМХО, проще в использовании CMD
Предполагаю, что дата в системе отображается как дд.мм.гггг
Код: Выделить весь код
@Echo Off

Call :DelOldFile "Z:\Soft_In\log_*.log" "15.03.2018"
Call :DelOldFile "Z:\Soft_In\print_[*].txt" "01.01.2016"
GoTo :Eof

:DelOldFile
	Set "DateSave=%~2"
	Set /A DateSave=%DateSave:~6,4%%DateSave:~3,2%%DateSave:~0,2%
	Pushd "%~dp1"
	FOR /F "usebackq delims=" %%f IN (`2^>nul Dir %1 /b /A:-D /O:D /T:W`) DO Call :DelDate "%~dp1%%f" "%%~tf" %DateSave%
	Popd
GoTo :Eof

:DelDate
	Set "DateFile=%~2"
	Set /A DateFile=%DateFile:~6,4%%DateFile:~3,2%%DateFile:~0,2%
	If %DateFile% LSS %3 Del %1 
GoTo :Eof

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Отправлено: 13:55, 25-03-2018 | #5


Новый участник


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

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


Путь я сразу поменял на тот который требовался.
Проверил скрипт еще раз с измененной вами командой - If jf.DateLastModified < dDt Then
Скрипт работает и при смене дат, удаление происходит нормально.

Больше спасибо за оказанную помощь. Буду учить мат часть.

С cmd тоже попробую

Отправлено: 14:02, 25-03-2018 | #6



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Архивирование и удаление файлов в папке старше n дней ryoryoryo Скриптовые языки администрирования Windows 14 09-04-2021 15:19
CMD/BAT - Удаление файлов старше N дней в подпаках, кроме файлов в самой папке Negtm Скриптовые языки администрирования Windows 4 03-02-2017 15:30
CMD/BAT - [решено] Удаление старых файлов по дате и имени, если их больше n NinjaScript Скриптовые языки администрирования Windows 2 04-03-2015 14:27
Любой язык - Удаление файлов старше 5 дней кроме указанного по имени. Joni Скриптовые языки администрирования Windows 6 11-07-2012 11:18
VBS/WSH/JS - [решено] Удаление файлов по сети старше 7 дней, оставлять не менее 10 файлов white155 Скриптовые языки администрирования Windows 6 04-01-2012 00:42




 
Переход