Скрипт очистки папки обмена
Приветствую всех!
Есть папка "Exchange", которая доступна всем пользователям в сети, (расшарена через DFS) и служит для обмена документами между пользователями. Каждый день ее надо очищать (не удалять). Права на нее стоят права для всех (кроме админа, у которого полный доступ) - Чтение/выполнение/запись. Помогите написать скрипт на очистку этой папки.
PS
Напоролся на ресурс в Инете - http://habrahabr.ru/blogs/i_am_clever/20443/ (Авто-очистка папки обмена) только не могу настроить под себя. Надо чтобы папка, которая лежит "O:\Public Folder\Exchange" очищалась. Что касается перемещения удаленных файлов в подкаталог _deletion_queue_, то можно оставить.
Прошу помочь!
Заранее благодарю!
|
Цитата:
Цитата 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
|
amel27, а можно ли сделать исключение?
В этой папке находится еще одна папка "price", которую удалять нельзя! Можно ли, чтобы скрипт чистил все, но ее оставлял?
|
У меня сделать не получилось. Как альтернативу я сделал копирование папки в другой католог, очистка exchange, а потом копирование price снова в этот же каталог....
Может быть можно сделать исключение?
|
Цитата:
Цитата stolyar
сделал копирование папки в другой католог, очистка exchange, а потом копирование price снова в этот же каталог.... »
|
проще учетке, под которой запускается скрипт закрыть доступ к подкаталогу (DENY)
|
stolyar, у меня на работе похожая ситуация, только папка зовется TMP и чистим ее раз в месяц (я шутки ради выставил 13е число ;) ), но тутже возникла проблема - поднялся жуткий хай на тему удаленных наиважнейших данных. Пришлось создавать папку "2beDeleted", куда все для начала переносилось на месяц до следующей зачистки. Единственное - у нас это делается не скриптом, а один бывший сотрудник быстренько накатал софтину. Поскольку аффтар не я, то поделиться не имею права, но сразу могу сказать - вопрос типа Вашего здесь промелькал - надо всего лишь поискать :search: (правда у меня самого с поиском не очень)
|
Цитата:
Цитата amel27
проще учетке, под которой запускается скрипт закрыть доступ к подкаталогу (DENY) »
|
Попробую!
|
Тема! Так проще, действительно....
Всем большое спасибо за помощь!
Топик офф.
|
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
Здесь как раз есть папки-исключения. Если немного подумать, то можно приспособить скрипт под свои нужды.
|
Время: 00:32.
© OSzone.net 2001-