Как искать ключевые слова по дате изменения текстовых файлов?
У меня есть несколько текстовых файлов, которые создаются каждый день.
Я хотел бы найти строку "apple" из последнего измененного текстового файла. Если строка не найдена, мне нужно будет искать из вчерашнего текстового файла. Если он все еще не найден, мне нужно будет поискать за день до вчерашнего текстового файла. Процесс продолжается, пока я не найду строку.
Возьмите пример:
Созданный сегодня текстовый файл с именем: 08112018.txt
Созданный вчера текстовый файл с именем: 08102018.txt
Текстовый файл, созданный позавчера, с именем: 08192018.txt
Сначала я начну поиск слова "яблоко" в 08112018.txt. Если он не найден, я буду искать "яблоко" в 08102018.txt. Процесс продолжается до тех пор, пока "яблоко" не будет найдено.
1 ответ
Вот что я думаю даст вам лучший результат:
Начните с перечисления всех ваших файлов в отдельный набор записей:
Set fso = CreateObject("Scripting.FileSystemObject")
Const ForReading = 1
Set list = CreateObject("ADOR.Recordset")
list.Fields.Append "name", 200, 255
list.Fields.Append "date", 7
list.Open
For Each f In fso.GetFolder("C:\your-folder-location").Files
list.AddNew
list("name").Value = f.Path
list("date").Value = f.DateLastModified
list.Update
Next
list.MoveFirst
Затем вы можете отсортировать их по дате последнего изменения:
list.Sort = "date DESC"
Теперь вы можете начать с верхней части списка и продолжить работу.
Dim foundApple
list.MoveFirst
Do Until list.EOF Or foundApple
Do Until objTextFile.AtEndOfStream
Set objTextFile = fso.OpenTextFile(list("name"), ForReading)
strLine = objTextFile.ReadLine()
If InStr(strLine, "apple") <> 0 then foundApple = True
Loop
' If foundApple = True Then (Do whatever stuff you need)
list.MoveNext
Loop
list.Close
- Я только что выбросил этот код в мозг. Это не проверено. YMMV.