Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Скрипт очистки папки обмена (http://forum.oszone.net/showthread.php?t=166462)

stolyar 06-02-2010 07:17 1340319

Скрипт очистки папки обмена
 
Приветствую всех!

Есть папка "Exchange", которая доступна всем пользователям в сети, (расшарена через DFS) и служит для обмена документами между пользователями. Каждый день ее надо очищать (не удалять). Права на нее стоят права для всех (кроме админа, у которого полный доступ) - Чтение/выполнение/запись. Помогите написать скрипт на очистку этой папки.

PS
Напоролся на ресурс в Инете - http://habrahabr.ru/blogs/i_am_clever/20443/ (Авто-очистка папки обмена) только не могу настроить под себя. Надо чтобы папка, которая лежит "O:\Public Folder\Exchange" очищалась. Что касается перемещения удаленных файлов в подкаталог _deletion_queue_, то можно оставить.

Прошу помочь!
Заранее благодарю!

amel27 06-02-2010 07:47 1340321

Цитата:

Цитата stolyar
скрипт на очистку этой папки »

Код:

On Error Resume Next

strFldr = "O:\Public Folder\Exchange"
Set objFSO = CreateObject("Scripting.FileSystemObject")

ClearFolder strFldr

Function ClearFolder(sFldr)
  On Error Resume Next
  Dim oD, cF, cD, oI

  Set oD = objFSO.GetFolder(sFldr)
  Set cF = oD.Files
  Set cD = oD.SubFolders

  For Each oI In cF
      oI.Attributes = 0
      oI.Delete
  Next

  For Each oI In cD
      ClearFolder oI.Path
      oI.Attributes = 0
      oI.Delete
  Next
End Function


stolyar 07-02-2010 06:26 1341094

=) СеньQ! То, что надо!!

stolyar 08-02-2010 16:54 1342192

amel27, а можно ли сделать исключение?
В этой папке находится еще одна папка "price", которую удалять нельзя! Можно ли, чтобы скрипт чистил все, но ее оставлял?

stolyar 09-02-2010 14:52 1343041

У меня сделать не получилось. Как альтернативу я сделал копирование папки в другой католог, очистка exchange, а потом копирование price снова в этот же каталог....
Может быть можно сделать исключение?

amel27 09-02-2010 16:53 1343174

Цитата:

Цитата stolyar
сделал копирование папки в другой католог, очистка exchange, а потом копирование price снова в этот же каталог.... »

проще учетке, под которой запускается скрипт закрыть доступ к подкаталогу (DENY)

NiOl 09-02-2010 18:49 1343266

stolyar, у меня на работе похожая ситуация, только папка зовется TMP и чистим ее раз в месяц (я шутки ради выставил 13е число ;) ), но тутже возникла проблема - поднялся жуткий хай на тему удаленных наиважнейших данных. Пришлось создавать папку "2beDeleted", куда все для начала переносилось на месяц до следующей зачистки. Единственное - у нас это делается не скриптом, а один бывший сотрудник быстренько накатал софтину. Поскольку аффтар не я, то поделиться не имею права, но сразу могу сказать - вопрос типа Вашего здесь промелькал - надо всего лишь поискать :search: (правда у меня самого с поиском не очень)

stolyar 10-02-2010 15:04 1343912

Цитата:

Цитата amel27
проще учетке, под которой запускается скрипт закрыть доступ к подкаталогу (DENY) »

Попробую!

stolyar 11-02-2010 10:10 1344547

Тема! Так проще, действительно....
Всем большое спасибо за помощь!
Топик офф.

vitaliyboch 15-02-2010 08:44 1347382

Скрипт из темы http://forum.oszone.net/thread-146190-3.html
Код:

'==== Script Information Header ====
'script name:        Purge Temp
'version:                1.0
'date:                        16.07.08
'autor:                        Bochkarev Vitaly
'description:        Скрипт удаляет устаревшие временные файлы с компьютера.

'==== Script Main Logic ====
on error resume next
const PurgeTime = 14 'days

'Exceptions - folders, which will not be processed
dim aExceptions(3)
aExceptions(0) = "Default User"
aExceptions(1) = "LocalService"
aExceptions(2) = "NetworkService"
aExceptions(3) = "All Users"

set oFSO = CreateObject("Scripting.Filesystemobject")
set oShell = createobject("wscript.shell")

'Set paths
sProgramFiles = oShell.ExpandEnvironmentStrings("%ProgramFiles%")
sWinDir = oShell.ExpandEnvironmentStrings("%WinDir%")
sWinTempFolder = sWinDir & "\Temp"
sDocuments = "C:\Documents and Settings"

'Create log-file
sLogFileName = sWinTempFolder & "\PurgeTemp_" & Date
sLogFileName = Replace(sLogFileName, ".", "_")
sLogFileName = Replace(sLogFileName, "/", "_")
set oLogFile = oFSO.CreateTextFile(sLogFileName & ".log",true)
oLogFile.WriteLine "========== Start purging =========="

'Purge Windows Temporary folder
oLogFile.WriteLine vbCrLf & "========== Windows Temporary folder =========="
PurgeFolder(sWinTempFolder)

'Purge Users Temporary folder and Users Temporary Internet Files
oLogFile.WriteLine vbCrLf & "========== Users Temporary folder and Users Temporary Internet Files =========="
set oDocuments = oFSO.GetFolder(sDocuments)
set colProfiles = oDocuments.SubFolders
for each oProfile in colProfiles
        bFlag = false
        for each sException in aExceptions
                if InStr(oProfile.Path,sException) > 0 then
                        bFlag = true
                        exit for
                end if
        next
        if bFlag = false then
                PurgeFolder(oProfile.Path & "\Local Settings\Temp")
                PurgeFolder(oProfile.Path & "\Local Settings\Temporary Internet Files")
        end if
next

'Purge NOD32 Quarantine
oLogFile.WriteLine vbCrLf & "========== NOD32 Quarantine =========="
sQuarantine = sProgramFiles & "\Eset\Infected"
PurgeFolder(sQuarantine)

'Close log-file
oLogFile.WriteLine vbCrLf & "========== Stop purging =========="
oLogFile.Close

'PurgeFolder procedure
sub PurgeFolder(sFolderPath)
        set oFolder = oFSO.GetFolder(sFolderPath)
        set colFiles = oFolder.Files
        for each oFile in colFiles
                if (Date-oFile.DateLastModified) > PurgeTime and (Date-oFile.DateCreated) > PurgeTime then
                        oLogFile.Writeline oFile.Path & vbTab & oFile.DateCreated
                        oFSO.DeleteFile oFile.Path, true
                        if err.Number <> 0 then
                                oLogFile.Writeline "-----> Error # " & CStr(Err.Number) & " " & Err.Description
                                err.clear
                        end if
                        wscript.sleep 20
                end if
        next
        set colSubFolders = oFolder.SubFolders
        for each oSubFolder in colSubFolders
                PurgeFolder(oSubFolder.Path)
                if oSubFolder.Size = 0 then
                        oLogFile.Writeline oSubFolder.Path & vbTab & oSubFolder.DateCreated
                        oFSO.DeleteFolder oSubFolder.path
                        if err.Number <> 0 then
                                oLogFile.Writeline "-----> Error # " & CStr(Err.Number) & " " & Err.Description
                                err.clear
                        end if
                end if
        next
end sub

Здесь как раз есть папки-исключения. Если немного подумать, то можно приспособить скрипт под свои нужды.


Время: 09:26.

Время: 09:26.
© OSzone.net 2001-