|
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
| Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Удаление файлов по сети старше 7 дней, оставлять не менее 10 файлов |
|
|
VBS/WSH/JS - [решено] Удаление файлов по сети старше 7 дней, оставлять не менее 10 файлов
|
|
Новый участник Сообщения: 29 |
Задача немного сложнее, нужно удалить все файлы по сети в расшаренной папке,
определённого разрешения, например *.zip в одной папке, старше 7 дней, при этом оставлять не менее 10 файлов, даже если они старше 7 дней |
|
|
Отправлено: 17:59, 26-12-2011 |
|
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать white155, Вы уверены насчёт «не старше»? Обычно требуется как раз наоборот — оставлять самые свежие файлы.
|
|
Отправлено: 09:50, 28-12-2011 | #2 |
|
Новый участник Сообщения: 29
|
Профиль | Отправить PM | Цитировать исправил
|
|
Отправлено: 12:10, 30-12-2011 | #3 |
|
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать white155, ясно.
Попробую и Вас приобщить к библиотеке Log Parser (Download: Log Parser 2.2 - Microsoft Download Center - Download Details). Примерный код: Если у Вас есть возможность использовать PowerShell — можно попробовать и так: |
|
Отправлено: 21:18, 30-12-2011 | #4 |
|
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать Iska, вопрос, вроде бы, несколько по другому сформулирован
оставить все файлы не старше 7дней и если их меньше 10, добавить из тех что старше 7 дней |
|
|
Отправлено: 10:53, 31-12-2011 | #5 |
|
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать introvert, осознал свою ошибку: свежих файлов может оказаться куда больше десяти. Подумаем, как и это учесть. Жаль, красоты в коде тут уже не будет
. |
|
Отправлено: 16:01, 31-12-2011 | #6 |
|
Ветеран Сообщения: 2735
|
Профиль | Отправить PM | Цитировать ' Скрипт оставляет в указанной папке не менее указанного числа свежих файлов с указанным расширением (если они есть)
' Если среди оставшихся файлов имеются старше указанного кол-ва дней, они удаляются
fPath = "E:\DelShare" ' Полное имя рабочего каталога (без слэжа \ на конце)
fExt = "bat" ' Расширение файлов
nMin = 10 ' Минимальное число оставляемых файлов
nOld = 7 ' Старше кол-ва дней файлы удаляем
OldDate = DateAdd("d", -nOld, Date)
' MsgBox CStr(OldDate)
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folds = FSO.GetFolder(fPath)
Set Files = Folds.Files
N = Files.Count - 1
' MsgBox CStr(N)
If N < 0 Then
MsgBox "В папке" + vbCrLf + fPath + vbCrLf + "файлы не найдены"
Else
ReDim nFiles(N), dFiles(N)
NN = -1
For Each jf In Files
nFiles(NN + 1) = jf.Name
If LCase(FSO.GetExtensionName(fPath + "\" + nFiles(NN + 1))) = LCase(fExt) Then
NN = NN + 1
dFiles(NN) = jf.DateLastModified
End If
Next
If NN < 0 Then
MsgBox "В папке" + vbCrLf + fPath + vbCrLf + "файлы c расширением " + fExt + vbCrLf + " не найдены"
Else
For i = 0 To NN
For j = i To NN
If dFiles(i) < dFiles(j) Then
df = dFiles(i)
dFiles(i) = dFiles(j)
dFiles(j) = df
nf = nFiles(i)
nFiles(i) = nFiles(j)
nFiles(j) = nf
End If
Next
' MsgBox CStr(dFiles(i)) + " " + nFiles(i)
Next
If NN > nMin - 1 Then
For i = nMin To NN
' MsgBox CStr(dFiles(i)) + " " + nFiles(i)
If dFiles(i) < OldDate Then Call FSO.DeleteFile(fPath + "\" + nFiles(i), True)
Next
End If
End If
End If
1. Записываю имена и даты изменения файлов в массивы 2. Сортирую по датам по убыванию 3. Просматриваю в массиве с датами файлов элементы более минимального количества Старые файлы удаляю |
|
------- Последний раз редактировалось megaloman, 04-01-2012 в 00:48. Отправлено: 00:42, 04-01-2012 | #7 |
|
|
Участник сейчас на форуме |
|
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
| Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
| CMD/BAT - [решено] Нужно удалить лог файлы старше 30 дней | ksv_sergo | Скриптовые языки администрирования Windows | 14 | 24-03-2016 15:02 | |
| Любой язык - Удаление файлов старше 5 дней кроме указанного по имени. | Joni | Скриптовые языки администрирования Windows | 6 | 11-07-2012 11:18 | |
| [решено] Автоочистка файлов, старше 5 дней. | Universal_gr | Программное обеспечение Linux и FreeBSD | 1 | 01-10-2010 01:12 | |
| Прочее - удаление файлов старше 10 дней | admin666 | Общий по Linux | 1 | 23-07-2009 19:09 | |
| Удаление файлов по сети в карзину | Admiral83 | Сетевые технологии | 1 | 15-02-2006 14:51 | |
|