Эквивалентный VBScript для этого будет включать в себя получение объекта папки и проверку количества его файлов коллекции. Дата последнего изменения папки также может быть проверена, чтобы определить, что-то изменилось или когда.
Цикл по коллекции папок .Files позволит вам проверить даты, размер и т. Д. Каждого файла в отдельности. Поскольку это набор файловых объектов, любой метод файлового объекта может быть выполнен напрямую или файловый объект может быть передан подпрограмме для обработки. Аналогичная коллекция .Subfolders перечисляет папки, созданные в этой папке, как объекты папок на случай, если вы также захотите отслеживать эту ситуацию.
Методы файла включают в себя .Copy .Move .Delete .OpenAsTextStream и свойства файла .DateLastModified .DateLastAccessed .Attributes и .Name являются обновляемыми.
Обратите внимание, что свойство .Name включает расширение файла, и если вы измените имя, вам может потребоваться вызвать FSO.GetExtensionName (), чтобы получить это расширение и добавить его к новому имени, прежде чем назначить его обратно свойству.
Коллекция Subfolders также имеет метод .Add (), который может создать новую дочернюю папку
.SubFolders.Add("NewFolderName")
и вместо метода .OpenAsTextStream файлового объекта у объектов папки есть метод .CreateTextFile (), который возвращает объект открытого текстового потока в новый текстовый файл, созданный в этой папке. Умное использование может заключаться в создании текстового потока, используемого вашими подпрограммами для записи ваших действий по обработке файлов в файл журнала. Или прочитайте текстовый файл напрямую и обработайте его содержимое.
Базовый пример скрипта для просмотра 10 файлов в папке
Set FSO = WScript.CreateObject("Scripting.FileSystemObject")
WatchFolder FSO.GetFolder("c:\watched")
WScript.Quit
Sub WatchFolder(oFldr)
While True
If oFldr.Files.Count >= 10 Then
WScript.Echo oFldr.Files.Count , "files in" , ofldr.Path , _
"Last Modified" , oFldr.DateLastModified
For Each oFile In oFldr.Files
WScript.Echo "File" , oFile.Name , _
"Last Modified" , oFile.DateLastModified , _
"Created" , oFile.DateCreated , _
"Size" , oFile.Size
' call subroutine to optionally process file
KillJunkFile oFile
Next
Exit Function
End If
WScript.Sleep 2000 ' wait 2 seconds before checking again.
Wend
End Sub
Sub KillJunkFile(oTestFile)
' delete any file named junk.txt
If LCase(oTestFile.Name) = "junk.txt" Then
oTestFile.Delete True ' true forces the delete
End If
End Sub
Обратите внимание, что функция WatchFolder () будет зацикливаться до тех пор, пока в просматриваемой папке не будет хотя бы 10 файлов. Вы должны убить задачу, чтобы иначе остановить ее, или добавить некоторую логику завершения, которая проверяет что-то в вашей системе и может сказать, что она должна выйти из цикла. Что-то вроде специально названного файла, записи в реестре, переменной среды и т. Д. Вы также можете закомментировать ключевые слова цикла While Wend и заставить планировщик задач Windows запускать сценарий каждый час, если для появления файлов достаточно много времени.