Как искать ключевые слова по дате изменения текстовых файлов?

У меня есть несколько текстовых файлов, которые создаются каждый день.

Я хотел бы найти строку "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.
Другие вопросы по тегам