Войти

Показать полную графическую версию : Передача объекта в функцию


ven00m
17-07-2008, 13:47
Вобщем надо написать скрипт для отчистки каталога со всеми подкаталогами (хз скока их там) от всяких ненужных файлов. Так как количество подкаталогов неизвестно то кроме как при помощи рекурсии имхо это не сделать, но у мну не получается передать в функцию каталог как объект. Заранее благодарен за помощь.
'On Error Resume Next
Set FSO = CreateObject("Scripting.FileSystemObject")

Set Folder = FSO.GetFolder("c:\test\") ' Начальный каталог

Function Cleaner ( byRef Folder )

For Each File in Folder.Files' Ищем в каталоге мусор среди файлов
If File.Name = "$*" Or File.Name = "Thumbs.db" Or File.Name = "*.TMP" Then ' по маске
'File.Delete 'удаляем
WScript.Echo File.Name
End If
Next

For Each subFolder in Folder.SubFolders
Cleaner ( subFolder )' вызываем эту же функцию для каждого подкоталога
Next

End Function

Petya V4sechkin
17-07-2008, 15:39
ven00m, эта строка явно не к месту:
If File.Name = "$*" Or File.Name = "Thumbs.db" Or File.Name = "*.TMP" Then

Так работает:
Set FSO = CreateObject("Scripting.FileSystemObject")

Set F = FSO.GetFolder("c:\test\") ' Начальный каталог
Cleaner F

Sub Cleaner(Folder)
On Error Resume Next

FSO.DeleteFile Folder.Path + "\$*", True
FSO.DeleteFile Folder.Path + "\Thumbs.db", True
FSO.DeleteFile Folder.Path + "\*.TMP", True

For Each subFolder in Folder.SubFolders
Cleaner subFolder
Next
End Sub

Busla
17-07-2008, 15:45
функцию объявил, а где её вызов?

ven00m
17-07-2008, 16:13
Спасибо петруха. Все зашибись работает :cool:




© OSzone.net 2001-2012