1 (изменено: Lex, 2015-12-13 19:57:31)

Тема: AHK: Копирование строк из одного текстового файла в другой

Преследую цель найти строку с определённым словом в одном текстовом файле и переместить её в отдельный текстовый файл. У меня уже это вышло, но беда в том, что скрипт постоянно копирует строки одни и те же. Возможно сделать чтобы он добавлял только новые строки после старых?
Прошу без ругательств, я в этом деле новенький.

FileRead, OutputVar, D:\chatlog.txt 

Loop, read, D:\chatlog.txt, D:\log.txt 

{ 

IfInString, A_LoopReadLine, ранга, FileAppend, %A_LoopReadLine%`n 

}

2

Re: AHK: Копирование строк из одного текстового файла в другой

Предложения начинаются с заглавной буквы, заканчиваются знаками препинания.
Lex, отредактируйте сообщение.

3

Re: AHK: Копирование строк из одного текстового файла в другой

Lex пишет:

Возможно сделать чтобы он добавлял только новые строки после старых?

Возможно. Но надо решить по какому принципу скриптом строки во входном файле будут определяться как старые или новые.
Если во входной файл происходит только дозаписывание (на что намекает имя файла "chatlog.txt"), то можно, например, перед тем как парсить его содержимое, сначала посчитать количество записей в выходном файле и при парсинге входного файла сделать сдвиг на это количество (т.е. проигнорировать первые N вхождений).
Или можно запомнить на какой строке входного файла завершился парсинг в прошлый раз и следующий парсинг сделать с соответствующим сдвигом.

4

Re: AHK: Копирование строк из одного текстового файла в другой

Можно так, проверяя размер файла chatlog.txt в цикле:

InputFile := "D:\chatlog.txt"
OutputFile := "D:\log.txt "
word := "ранга"

lineNumber := 0
loop
{
   FileGetSize, size, %InputFile%
   if (size > sizePrev)
   {
      sizePrev := size
      loop
      {
         FileReadLine, readLine, %InputFile%, % A_Index + lineNumber
         if ErrorLevel
         {
            if (NewLines != "")
            {
               FileAppend, %NewLines%, %OutputFile%
               NewLines := ""
            }
            lineNumber += A_Index - 1
            break
         }
         if InStr(readLine, word)
            NewLines .= readLine "`n"
      }
   }
   sleep, 100
}
+ Lex

5

Re: AHK: Копирование строк из одного текстового файла в другой

Malcev
Спасибо большое, это именно то, что нужно!
Серьезно, очень помог человек. Лови плюсик)