Майже завжди, коли кілька комп’ютерів об’єднують у мережу, на одному чи кількох із них з’являється папка з доступом на запис, щоб було зручно обмінюватися документами. Спочатку зазвичай проблем немає. Але якщо така папка розташована на сервері, до якого мають доступ багато працівників, рано чи пізно вона перетворюється на звалище файлів: ніхто не поспішає видаляти залишені там файли. Іноді цим займається системний адміністратор. Згодом у нього виникає бажання пояснити всім працівникам, що ця папка призначена лише для обміну й у ній не слід нічого зберігати. Та набагато простіше, красивіше й ефективніше створити скрипт, який не дозволить цьому звалищу розростатися.
Що робить скрипт:
- Видаляє всі файли з папки, крім зазначених винятків.
- Переміщує все видалене до окремої папки (назвемо її «архів»), названої датою видалення. Так згодом можна зрозуміти, що саме було видалено цього дня.
- Очищає архів, залишаючи в ньому вказану кількість папок.
Звісно, цей скрипт потрібно запускати щодня; для цього можна використати стандартний планувальник завдань.
2025.11.18 P.S. Скрипт виявився вдалим і затребуваним: він пропрацював 15 років і працює досі. Та в мене нарешті дійшли руки трохи його впорядкувати й поліпшити, тож нижче — нова версія скрипту.
Скрипт на VB (наприклад, збережіть його у файл «obmen.vbs»):
'====================== НАЛАШТУВАННЯ ======================
pMusornik = "M:\MUSORNIK" 'папка для сміття
pBackupRoot = "M:\BACKUP\deleted\" 'коренева папка deleted
minAgeDays = 7 'мінімальний вік для перенесення
keepDays = 30 'скільки днів зберігати резервні копії
skipFolders = Array( _
"Бухгалтерия", _
"Информация", _
"Персональные папки" _
)
skipFiles = Array( _
"desktop.ini" _
)
'====================== ПІДГОТОВКА ======================
Set fso = CreateObject("Scripting.FileSystemObject")
Set oMusornik = fso.GetFolder(pMusornik)
pBackup = pBackupRoot & fixDate(Date)
If Not fso.FolderExists(pBackup) Then
Set oBackup = fso.CreateFolder(pBackup)
Else
Set oBackup = fso.GetFolder(pBackup)
End If
'====================== ПЕРЕНЕСЕННЯ ПАПОК ======================
For Each oFolder In oMusornik.Subfolders
If Not InArray(oFolder.Name, skipFolders) Then
If IsOld(oFolder, minAgeDays) Then
oFolder.Move oBackup.Path & "\"
End If
End If
Next
'====================== ПЕРЕНЕСЕННЯ ФАЙЛІВ ======================
For Each oFile In oMusornik.Files
If Not InArray(oFile.Name, skipFiles) Then
If IsOld(oFile, minAgeDays) Then
oFile.Move oBackup.Path & "\"
End If
End If
Next
'====================== ОЧИЩЕННЯ СТАРИХ ПАПОК DELETED ======================
For i = keepDays To 100
oldFolder = pMusornik & "\deleted\" & fixDate(Date - i)
If fso.FolderExists(oldFolder) Then
fso.DeleteFolder oldFolder, True
End If
Next
'====================== ФУНКЦІЇ ======================
Function InArray(value, arr)
For Each v In arr
If LCase(v) = LCase(value) Then
InArray = True
Exit Function
End If
Next
InArray = False
End Function
Function IsOld(obj, days)
IsOld = (Now - obj.DateLastModified) >= days
End Function
Function fixDate(dt)
fixDate = Year(dt) & "-" & Right("0" & Month(dt), 2) & "-" & Right("0" & Day(dt), 2)
End Function

Действительно очень удобный скрипт, который позволяет сэкономить кучу времени, для очистки компьютера. На своём опыте знаю, что обычно на подобных файлопомойках накапливается огромное количество ненужной информации, которую рано или поздно приходиться чистить системному администратору. Возникает закономерный вопрос – зачем тратить на этот процесс уйму времени, если его можно автоматизировать с помощью данного скрипта. Имел подобную проблему, тогда у нас при обмене документами, на подобных папках, также скапливалось много ненужной информации, которую приходилось время от времени чистить.