Общая папка для обмена документами в офисе (автоматизация очистки)

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

Что делает скрипт:

  • Удаляет все файлы в папке, кроме заданных исключений.
  • Складывает все удаленное в отдельную папку (назовем ее «архив»), озаглавленную датой, когда произведено удаление. Так чтоб потом можно было понять что там было удалено в этот день.
  • Чистит архив, оставляя там заданное количество папок.

Конечно этот скрипт нужно еще и ежедневно запускать, но тут применяем хотя бы стандартный планировщик задач.

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

1 комментарий к “Общая папка для обмена документами в офисе (автоматизация очистки)”

  1. Игорь

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

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *