Поиск в txt файле и вывод строки с найденным совпадением

Обсуждение программ nnCron и nnCron LITE

Re: Поиск в txt файле и вывод строки с найденным совпадением

Postby VoidVolker » Sun, 29 Apr 2012, 22:09

spronkin wrote:Сначала ничего не печатает

Вероятно тормоза харда, винды или блокнота.
spronkin wrote:выплевывает сразу все, что накопировал.

Все правильно. Строки вставляются по очереди, одна за другой.
spronkin wrote:чтобы в каждой итерации в CLIPBOARD помещалась только текущая строка

Именно так и происходит. В каждой итерации из файла читается строка, далее она перемещается в буфер и потом уже вставляется.
spronkin wrote:и позволялись бы иные операции в цикле?

А ничто и не запрещает дописать нужный код в нужном месте.
spronkin wrote:Можно ли заставить READ-BY-LINE работать как цикл с 1 по END_OF_LINE

Это как?
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Поиск в txt файле и вывод строки с найденным совпадением

Postby spronkin » Sun, 29 Apr 2012, 22:26

Как бы вот так сделать?
Code: Select all
Запустить notepad.exe
FOR i=1 TO EOL_of_ip.txt
       Скопировать i-ю строку в буфер
       Вставить {ENTER}{ENTER}
       Вставить i-ю строку в окно notepad.exe
       ...
       Выполнить другие действия
ELSE IF i=EOL_of_ip.txt
       Выйти из цикла

Между помещением i-ой строки в буфер и вставкой из него я не могу выполнить никакие команды...
Last edited by spronkin on Sun, 29 Apr 2012, 22:33, edited 1 time in total.
User avatar
spronkin
 
Posts: 86
Joined: Sun, 15 Jan 2012, 13:56

Re: Поиск в txt файле и вывод строки с найденным совпадением

Postby VoidVolker » Sun, 29 Apr 2012, 22:33

spronkin wrote:Между помещением в буфер и вставкой из него я не могу вставить никакие команды...

В смысле? Что именно не получается? Просто берем и выполняем нужные действия:
Code: Select all
FOUND-LINE CLIPBOARD!
PAUSE: 2000
<... работа ...>
162 AKEYDN 86 AKEY 162 AKEYUP
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Поиск в txt файле и вывод строки с найденным совпадением

Postby spronkin » Sun, 29 Apr 2012, 22:39

В смысле? Что именно не получается?

Я никак не могу понять, почему в нижеприведенном коде "{ENTER}{ENTER}" и PAUSE: 2000 на самом деле вставляются не после каждой итерации вставки, а только один раз.
Code: Select all
START-APP: notepad.exe
    READ-BY-LINE: "c:\nncron\ip.txt"
        PAUSE: 2000
        FOUND-LINE CLIPBOARD!
        PAUSE: 2000
        162 AKEYDN 86 AKEY 162 AKEYUP
        PAUSE: 2000
        SEND-KEYS: "{ENTER}{ENTER}"
    ;READ-BY-LINE
User avatar
spronkin
 
Posts: 86
Joined: Sun, 15 Jan 2012, 13:56

Re: Поиск в txt файле и вывод строки с найденным совпадением

Postby VoidVolker » Sun, 29 Apr 2012, 22:59

Значит в файле одна строка. Либо перевод строки не виндовый - тогда в файле все равно одна строка.
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Поиск в txt файле и вывод строки с найденным совпадением

Postby spronkin » Sun, 29 Apr 2012, 23:10

ip.txt в Unix кодировке, 1251 (ANSi - кириллица), переносы строк имеются. Может кодировку не переваривает? В каком формате файл скармливать ему надо? В блокноте вставляет все в одну строку, переносы отображаются как квадратики.
User avatar
spronkin
 
Posts: 86
Joined: Sun, 15 Jan 2012, 13:56

Re: Поиск в txt файле и вывод строки с найденным совпадением

Postby spronkin » Sun, 29 Apr 2012, 23:31

Проблема была в UNIX end-of-line characters. Конвертнул в DOS sed'ом из unixutils:
Code: Select all
sed -e "s/$/\r/" ip.txt > ip2.txt

Все работает. Спасибо!
User avatar
spronkin
 
Posts: 86
Joined: Sun, 15 Jan 2012, 13:56

Re: Поиск в txt файле и вывод строки с найденным совпадением

Postby VoidVolker » Mon, 30 Apr 2012, 07:34

Просто READ-LINE, через который работает RBL, окончанием строки считает последовательность байт 0x0D0A.
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Поиск в txt файле и вывод строки с найденным совпадением

Postby neprotiv » Fri, 31 Aug 2012, 13:29

вроди бы по адрессу обращаюсь. но ничего не смыслю в програмировании..может поможете...

нужна такая штука чтоб в .txt файлах находило строчку *дата создания* и *дата*
*дата создания* может называтся *дата изменения*
формат *даты* неизвестен (может быть 01.01.2012 а может 2012-01-01)
после этого создавался лог файл, в котором будет путь файла и *дата* (разделитель табуляция)
пример
D:\папка1\текстовый_файл1.txt *дата создания 2012-01-01*
D:\папка1\текстовый_файл2.txt *дата изменения 01.01.2012*

спасибо
neprotiv
 
Posts: 1
Joined: Fri, 31 Aug 2012, 12:54

Re: Поиск в txt файле и вывод строки с найденным совпадением

Postby VoidVolker » Fri, 31 Aug 2012, 18:31

Добавить в кронтаб(Меню крона > Редактировать > Crontab: nncron.tab) следующую задачу:
Code: Select all
#( Задача_185231082012
NoActive
SingleInstance
: ResultFile  S" C:\result.txt" ;   \ Файл для записи результата
Action:
S" " ResultFile FWRITE                                                              \ Очищаем результирующий файл
FOR-FILES: "C:\path\*.txt"                                                          \ Для каждого файла *.txt в каталоге C:\path ...
  FOUND-FULLPATH FILE                                                                 \ Загружаем файл в память
  OVER SWAP                                                                           \ Сохраняем на стеке адрес загруженного файла
  S" /.*((дата\sсоздания)|(дата\sизменения))\s(\d+[\-\.]\d+[\-\.]\d+).*/" RE-ALL      \ Проходим регулярным выражением в цикле по содержимому файла ...
    FOUND-FULLPATH  ResultFile FAPPEND                                                  \ Записываем полный путь найденного файла в результирующий файл
    9 SP@ 1         ResultFile FAPPEND DROP                                             \ Пишем табуляцию
    $1              ResultFile FAPPEND                                                  \ Пишем первый паттерн регулярного выражения
    9 SP@ 1         ResultFile FAPPEND DROP                                             \ Пишем табуляцию
    $4              ResultFile FAPPEND                                                  \ Пишем второй паттерн
    CRLF            ResultFile FAPPEND                                                  \ Пишем перевод строки
  ;RE-ALL
  FREE THROW                                                                          \ Освобождаем занятую файлом память
FOR-FILES
)#
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Previous

Return to nnCron forum (Russian)

Who is online

Users browsing this forum: No registered users and 5 guests