Тема: VBS: Отбирать в коллекцию папки по определенному фильтру
Добрый вечер!
Есть исходный каталог, в котором куча папок, название которых имеет структуру "yyyymmdd" (год-месяц-день). В каждой из этих папок еще куча разных подпапок с множеством разных файлов.
Необходимо отбирать определенные файлы с определенным содержимым и копировать их в заданную папку.
Проблема в следующем: данный отбор нужно делать не по всем папкам, а только по тем, названия которых начинаются на определенный "год-месяц" (например, "200501_").
Есть исходный скрипт, который делает отбор по всем папкам. Прочитав кучу статей и форумов, нашел вроде бы нужную функцию, но так как в скриптописании я новичок, никак не удается ее реализовать. Важное условие: решить поставленную проблему необходимо только с помощью VBS. Просьба помочь дописать скрипт.
Сам скрипт:
sFolder = "e:\Rezak\proba\2005\" 'путь до исходного каталога
dFolder = "e:\Rezak\proba\copy\" 'папка, в которую делается копия файлов, подходящих под критерии отбора.
filter = "200501*" 'нужно ли отдельно прописывать значение filter'а или достаточно указать его при вставке функции?
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oFolder = oFSO.GetFolder(sFolder)
ShowSubFolders(oFolder)
Set oWshShell = Nothing
Set oFSO = nothing
Set oDataBase = nothing
Set oShell = nothing
WScript.quit
Sub ShowSubFolders(oFolder)
'Set collFolders = oFolder.SubFolders 'было в оригинале
Set collFolders = NewoFolder(collFolders, "200501*") 'вставка функции
For Each oSubFolder In collFolders
Set collFiles = oSubFolder.Files
For Each oFile In collFiles
If oFSO.GetExtensionName (oFile.Path) = "doc" Then
... 'вырезал критерии отбора содержимого файлов, чтоб сократить скрипт.
End If
Next
ShowSubFolders(oSubFolder)
Next
End Sub
' попытка реализовать функцию отбора папок, названия которых начинаются на определенный "год-месяц"
Function NewoFolder(collFolders, ByVal filter)
'Dim collFolders As New Collection 'на некоторых форумах встречал использование данного выражения, но применить его не смог...
Set NewoFolder = New Collection 'создаем новую коллекцию папок.
Set collFolders = oFolder.SubFolders
For Each oSubFolder In collFolders 'перебираем папки в коллекции папок.
If oSubFolder.Name Like filter Then NewoFolder.Add oSubFolder 'если название папок начинается на значение, указанное в filter, тогда записываем эти папки в новую коллекцию папок.
Next
End Function