Войти

Показать полную графическую версию : [решено] Скрипт очистки папки обмена


stolyar
06-02-2010, 07:17
Приветствую всех!

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

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

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

amel27
06-02-2010, 07:47
скрипт на очистку этой папки »

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
=) СеньQ! То, что надо!!

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

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

amel27
09-02-2010, 16:53
сделал копирование папки в другой католог, очистка exchange, а потом копирование price снова в этот же каталог.... »проще учетке, под которой запускается скрипт закрыть доступ к подкаталогу (DENY)

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

stolyar
10-02-2010, 15:04
проще учетке, под которой запускается скрипт закрыть доступ к подкаталогу (DENY) »
Попробую!

stolyar
11-02-2010, 10:10
Тема! Так проще, действительно....
Всем большое спасибо за помощь!
Топик офф.

vitaliyboch
15-02-2010, 08:44
Скрипт из темы 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


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




© OSzone.net 2001-2012