Цитата: Подскажите пожалуйста, как можно организовать удаление файлов определенного расширения (.avi)
booro Код: Option Explicit
'err.raise 1, "Achtung!", "для запуска закоментировать строку генерации ошибки"
'1) Задать папки для поиска в массив aFolders, например "C:\","E:\"
'2) задать расширения файлов в массив aExtensions, например "mp3","avi","wma"
'3) задать путь и файл для логирования LogFileName1 , например "d:\temp\i.txt"
'см. дальше по тексту...
'Сценарий сканирует указанные каталоги и удаляет в нем файлы с указанными расширениями
Dim LogFileName1
'dim NameFileOfMessage
dim TextOfMessage
Dim aFolders 'массив каталогов
Dim aExtensions 'массив расширений файлов
dim file1
dim FileOfMessage
'1) Задать папки для поиска в массив aFolders, например aFolders = Array("C:\","E:\")
aFolders = Array("D:\")
'2) задать расширения файлов в массив aExtensions, например aExtensions = Array( "mp3","avi","wma")
aExtensions = Array( "id","nsf")
Dim fso
'3) задать путь и файл для логирования LogFileName1 , например LogFileName1 = CStr("d:\temp\i.txt")
LogFileName1 = CStr("c:\Log_Delete_Incoming.txt")
'
'4) пункт убран
'
'5)текст сообщения, которое будет в файле в папке где был удалён файл
TextOfMessage = CStr("Администрация предупреждает: ")
Set fso = CreateObject("Scripting.FileSystemObject")
Set file1 = fso.OpenTextFile(LogFileName1,8,true)
Dim i
file1.WriteLine "----------- начало поиска --------------" & cstr(Date()) & "|" & cstr(Time())
For i = 0 To UBound(aFolders)
If fso.FolderExists(aFolders(i)) Then
on error resume next
Err.Clear
Dim folder
Set folder = fso.GetFolder(aFolders(i))
Dim file
For Each file In folder.Files
if Err then
file1.WriteLine "---> " & cstr(Date()) & "|" & cstr(Time()) &"!!! ->!Ошибка при доступе к папке!<- " &folder
exit for
End If
If IsKnowExtensions(file) Then
Set FileOfMessage = fso.OpenTextFile(folder+"\"+file.name+".txt",8,true)
FileOfMessage.WriteLine (TextOfMessage)
FileOfMessage.WriteLine ("файл '"& file.name & "' изъят до выяснения обстоятельств...")
FileOfMessage.close
file.Delete True
end if
Next
dim subFolder
For Each subFolder In folder.SubFolders
if Err then
exit for
end if
ScanSubFolder subFolder
Next
end if
Next
file1.WriteLine "----------- конец поиска --------------" & cstr(Date()) & "|" & cstr(Time())
file1.close
Function IsKnowExtensions(file)
Dim strExtensions
strExtensions = fso.GetExtensionName(file.Path)
Dim i
For i = 0 To UBound(aExtensions) '- 1
If ucase(strExtensions) = ucase(aExtensions(i)) Then
'msgbox "!"
file1.WriteLine (cstr(Date()) & "|" & cstr(Time()) &" был Удалён : " & file.Path )
IsKnowExtensions = True
Exit Function
End If
Next
IsKnowExtensions = False
End Function
Sub ScanSubFolder(folder)
Dim file
on error resume next
Err.Clear
For Each file In folder.Files
if Err then
file1.WriteLine "---> " & cstr(Date()) & "|" & cstr(Time()) &"!!! ->!Ошибка при доступе к папке!<- " &folder
Err.Clear
exit sub
end if
If IsKnowExtensions(file) Then
Set FileOfMessage = fso.OpenTextFile(folder+"\"+file.name+".txt",8,true)
FileOfMessage.WriteLine (TextOfMessage)
FileOfMessage.WriteLine ("файл '"& file.name & "' изъят до выяснения обстоятельств...")
FileOfMessage.close
file.Delete true
end if
Next
Dim subFolder
For Each subFolder In folder.SubFolders
ScanSubFolder subFolder
Next
End Sub