Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: stadon on July 30, 2020, 03:13:09 PM
-
Всем доброго времени суток Уважаемые!
Написал скрипт, ну точнее собрал по частям с того что нашел на форуме, так как не особо соображаю в алгоритмах (
Проблема в том что файлы txt в среднем от 80 до 100 метров, и весь этот процесс очень туго идет, хотя тестировал на файлах до 2-3 метров - все летит как ракета )
Подскажите пожалуйста как можно это все безобразие оптимизировать и ускорить ?
Или как вариант чтение txt файлов с определенной папки по очереди (add.txt, add2.txt, ... add100.txt) к примеру.
Получилось вот что:
FOR ($a=0, $a<1) // 1 кусок цикла
WAITMS(10)
LCLICK(1011,360)
END_CYC
LCLICK(344,705)
FOR ($i=0, $i<150) // 2 кусок
INC ($num,1) // нарастающая переменная, строка +1
IF($num > TFCOUNT ("add.txt")) // файл со строками
HALT // конец скрипта
END_IF
$b = TFREAD ("add.txt", $num)
//TFDELETE("add.txt", 1) - неактуально, очень замедляет процесс
INC($e,1) // нарастающая переменная, считает количество строк в логе
TOCLIP(strconcat("Привет ",$b))
KEYDOWN (#CTRL)
KEYDOWN (#V)
KEYUP (#V)
KEYUP (#CTRL)
KEYPRESS(#ENTER)
WAITMS(5)
LOGWRITE ($e) // лог
END_CYC
Спасибо за Ваше внимание, буду очень благодарен за помощь!
-
Большие файлы с SSD быстрее читаются или с виртуального диска в оперативной памяти
-
Большие файлы с SSD быстрее читаются или с виртуального диска в оперативной памяти
Если я правильно понял вопрос, то файлы читаются с SSD (на вооружении имеется 2 SSD по 1.5 ТБ), потому что я далек от "Виртуального диска в оперативной памяти", - даже не представляю как это реализовать (
-
https://yadi.sk/d/twaOcrnqrgPyGw
SoftPerfect RAM Disk
Этой программой можно сделать виртуальный диск в оперативной памяти. Выглядит, как обычный диск с буквой, главное что бы оперативной памяти хватил.
-
https://yadi.sk/d/twaOcrnqrgPyGw
SoftPerfect RAM Disk
Этой программой можно сделать виртуальный диск в оперативной памяти. Выглядит, как обычный диск с буквой, главное что бы оперативной памяти хватил.
Установил, выделил 200 мб, скинул скрипт и файл, но что-то не очень улучшило ситуацию (
Подскажите пожалуйста реализацию с чтением файлов из папки по очереди, если это возможно.
-
В коде скрипта можно сделать пару оптимизаций:
1. Количество строк в файле проверять 1 раз, а не перед каждым чтением строки из файла. Для больших файлов это критично.
2. Вывод в лог сделать в отдельном потоке, с увеличенным интервалом. Посмотреть сколько строк из файла обработал скрипт, можно раз в несколько секунд, а не на каждой итерации цикла. Вывод в лог съедает много времени.
Вот так будет работать раза в 2 быстрее:
FOR ($a=0, $a<1) // 1 кусок цикла
WAITMS(10)
LCLICK(1011,360)
END_CYC
LCLICK(344,705)
$count = TFCOUNT("add.txt") + 1 // количество строк в файле
FOR ($i = 1, (($i < 150) & ($i < $count))) // 2 кусок
$b = TFREAD("add.txt", $i)
TOCLIP(STRCONCAT("Привет ", $b))
KEYDOWN(#CTRL)
KEYPRESS(#V)
KEYUP(#CTRL)
KEYPRESS(#ENTER)
WAITMS(5)
END_CYC
THREAD(name, 1)
WAIT(3) // частота вывода в лог
// LOGCLEAR // чтобы лог не разрастался
LOGWRITE ($i) // лог
END_THREAD
HALT
-
Подскажите пожалуйста реализацию с чтением файлов из папки по очереди, если это возможно.
Вот как то так. Не проверял, должно работать, только путь к файлам свой указать надо.
STRSEPARATE("add;add2;add3;add4;add5", ";", $arr) // список имен файлов в массив
FOR($n = 0, $n < ARRSIZE($arr))
$file = STRCONCAT($arr[$n], ".txt") // путь к файлу (полный или относительный)
FOR ($a=0, $a<1) // 1 кусок цикла
WAITMS(10)
LCLICK(1011,360)
END_CYC
LCLICK(344,705)
$count = TFCOUNT($file) + 1 // количество строк в файле
FOR ($i = 1, (($i < 150) & ($i < $count))) // 2 кусок
$b = TFREAD($file, $i)
TOCLIP(STRCONCAT("Привет ", $b))
KEYDOWN(#CTRL)
KEYPRESS(#V)
KEYUP(#CTRL)
KEYPRESS(#ENTER)
WAITMS(5)
END_CYC
END_CYC
THREAD(name, 1)
WAIT(3) // частота вывода в лог
// LOGCLEAR // чтобы лог не разрастался
LOGWRITE (STRCONCAT("Файл: ", $arr[$n], ".txt", " | Строка: ", $i)) // вывод в лог
END_THREAD
HALT
-
А еще лучше будет, если лог обновлять не по времени, а по требованию.
STRSEPARATE("add;add2;add3;add4;add5", ";", $arr) // список имен файлов в массив
FOR($n = 0, $n < ARRSIZE($arr))
$file = STRCONCAT($arr[$n], ".txt") // путь к файлу (полный или относительный)
FOR ($a=0, $a<1) // 1 кусок цикла
WAITMS(10)
LCLICK(1011,360)
END_CYC
LCLICK(344,705)
$count = TFCOUNT($file) + 1 // количество строк в файле
FOR ($i = 1, (($i < 150) & ($i < $count))) // 2 кусок
$b = TFREAD($file, $i)
TOCLIP(STRCONCAT("Привет ", $b))
KEYDOWN(#CTRL)
KEYPRESS(#V)
KEYUP(#CTRL)
KEYPRESS(#ENTER)
WAITMS(5)
END_CYC
END_CYC
SETTHREAD (log, 0) // когда все файлы обработаны - остановить поток "log"
//
LOGWRITE (STRCONCAT("Файл: ", $arr[$n], ".txt", " | Строка: ", $i)) // вывод в лог последней статистики
HALT
THREAD(log, 1)
WAIT(3) // ожидание обновления лога
WHILE(ISKEYDOWN(#F4)) // если нажата клавиша F4 - лог будет обновляться
// LOGCLEAR // чтобы лог не разрастался
LOGWRITE (STRCONCAT("Файл: ", $arr[$n], ".txt", " | Строка: ", $i)) // вывод в лог
WAIT(1) // частота обновления лога
END_CYC
END_THREAD
Можно еще добавить возможность сохранения прогресса выполнения сценария в файл. Чтобы при необходимости, можно было выключить кликер и при следующем запуске он продолжил свою работу с того места, на котором его прервали. И временную приостановку сценария тоже можно сделать.
Всё это конечно скорости не прибавит, зато даст возможность завершить очень длительный по времени выполнения сценарий.
-
А еще лучше будет, если лог обновлять не по времени, а по требованию.
STRSEPARATE("add;add2;add3;add4;add5", ";", $arr) // список имен файлов в массив
FOR($n = 0, $n < ARRSIZE($arr))
$file = STRCONCAT($arr[$n], ".txt") // путь к файлу (полный или относительный)
FOR ($a=0, $a<1) // 1 кусок цикла
WAITMS(10)
LCLICK(1011,360)
END_CYC
LCLICK(344,705)
$count = TFCOUNT($file) + 1 // количество строк в файле
FOR ($i = 1, (($i < 150) & ($i < $count))) // 2 кусок
$b = TFREAD($file, $i)
TOCLIP(STRCONCAT("Привет ", $b))
KEYDOWN(#CTRL)
KEYPRESS(#V)
KEYUP(#CTRL)
KEYPRESS(#ENTER)
WAITMS(5)
END_CYC
END_CYC
SETTHREAD (log, 0) // когда все файлы обработаны - остановить поток "log"
//
LOGWRITE (STRCONCAT("Файл: ", $arr[$n], ".txt", " | Строка: ", $i)) // вывод в лог последней статистики
HALT
THREAD(log, 1)
WAIT(3) // ожидание обновления лога
WHILE(ISKEYDOWN(#F4)) // если нажата клавиша F4 - лог будет обновляться
// LOGCLEAR // чтобы лог не разрастался
LOGWRITE (STRCONCAT("Файл: ", $arr[$n], ".txt", " | Строка: ", $i)) // вывод в лог
WAIT(1) // частота обновления лога
END_CYC
END_THREAD
Спасибо большое Вам за помощь!
1 вариант более мне понятен, но работает немного медленнее чем 2 вариант, единственное что счетчик слетает после выхода из 2 куска скрипта после выполнения $i < 150 (и в 1 скрипте и во 2)... Как это можно исправить ? - что бы постоянно считало, мне это нужно что бы не использовать TFDELETE, я потом сам руками открываю и удаляю пройденные строки, так как иногда скрипт может часов 10 работать, а иногда жена говорит поехали в магазин и я все останавливаю через 30 минут )))
3 скрипт заканчивается ошибкой, добавил 2 вложения (скрины)
-
Чтобы небыло ошибки, надо в строке
STRSEPARATE("add;add2;add3;add4;add5", ";", $arr) // список имен файлов в массив
оставить только имена существующих файлов, остальные удалить (вместе с разделителями).
И значит нужно вернуть на место нарастающую переменную:
INC ($num,1) // нарастающая переменная, строка +1
или
INC($e,1) // нарастающая переменная, считает количество строк в логе
И соответственно, вывести её в лог.
-
так как иногда скрипт может часов 10 работать, а иногда жена говорит поехали в магазин и я все останавливаю через 30 минут )))
Видимо сохранение все же нужно будет сделать.
Можно еще добавить возможность сохранения прогресса выполнения сценария в файл. Чтобы при необходимости, можно было выключить кликер и при следующем запуске он продолжил свою работу с того места, на котором его прервали. И временную приостановку сценария тоже можно сделать.
Всё это конечно скорости не прибавит, зато даст возможность завершить очень длительный по времени выполнения сценарий.
Только сейчас не смогу, работа мешает.((
-
Чтобы небыло ошибки, надо в строке
STRSEPARATE("add;add2;add3;add4;add5", ";", $arr) // список имен файлов в массив
оставить только имена существующих файлов, остальные удалить (вместе с разделителями).
И значит нужно вернуть на место нарастающую переменную:
INC ($num,1) // нарастающая переменная, строка +1
или
INC($e,1) // нарастающая переменная, считает количество строк в логе
И соответственно, вывести её в лог.
Сидел смотрел на код... Чет ничего не получается реализовать ((
Нашел программку которая режет txt на количество строк, разрезал на файлы по 5 мб, - их быстрее Clickermann переваривает )
Могу Вас попросить, прикрутить нарастающую переменную которая будет считать строки до конца перебора всех файлов, к скрипту с масивами (он быстрее работает)
STRSEPARATE("add;add2;add3;add4;add5", ";", $arr) // список имен файлов в массив
FOR($n = 0, $n < ARRSIZE($arr))
$file = STRCONCAT($arr[$n], ".txt") // путь к файлу (полный или относительный)
FOR ($a=0, $a<1) // 1 кусок цикла
WAITMS(10)
LCLICK(1011,360)
END_CYC
LCLICK(344,705)
$count = TFCOUNT($file) + 1 // количество строк в файле
FOR ($i = 1, (($i < 150) & ($i < $count))) // 2 кусок
$b = TFREAD($file, $i)
TOCLIP(STRCONCAT("Привет ", $b))
KEYDOWN(#CTRL)
KEYPRESS(#V)
KEYUP(#CTRL)
KEYPRESS(#ENTER)
WAITMS(5)
END_CYC
END_CYC
THREAD(name, 1)
WAIT(3) // частота вывода в лог
// LOGCLEAR // чтобы лог не разрастался
LOGWRITE (STRCONCAT("Файл: ", $arr[$n], ".txt", " | Строка: ", $i)) // вывод в лог
END_THREAD
HALT
-
GETFILELIST($arr, "C:\papka\*.txt") // список всех *.txt файлов в папке "C:\papka\"
FOR($n = 0, $n < ARRSIZE($arr))
$file = $arr[$n]
FOR ($a=0, $a<1) // 1 кусок цикла
WAITMS(10)
LCLICK(1011,360)
END_CYC
LCLICK(344,705)
$count = TFCOUNT($file) + 1 // количество строк в файле
FOR ($i = 1, (($i < 150) & ($i < $count))) // 2 кусок
$b = TFREAD($file, $i)
TOCLIP(STRCONCAT("Привет ", $b))
KEYDOWN(#CTRL)
KEYPRESS(#V)
KEYUP(#CTRL)
KEYPRESS(#ENTER)
WAITMS(5)
INC($num) // количество обработанных строк
END_CYC
// INC($num,$i) // количество обработанных строк, по окончании обработки фала
END_CYC
SETTHREAD (log, 0) // когда все файлы обработаны - остановить поток "log"
LOGWRITE ("Всего бработано строк: ", $num) // вывод в лог последней статистики
THREAD(name, 1)
WAIT(1) // частота вывода в лог
LOGCLEAR // чтобы лог не разрастался
LOGWRITE ("В обработке файл: ", $file) // вывод в лог
LOGWRITE ("Обработано строк: ", $num)
END_THREAD
HALT
Скрипт просканирует папку на наличие txt-фалов и будет обрабатывать их по порядку.
Количество обработанных строк стакается в переменную $num, в строке 31. Можно эту строку закомментировать и активировать строку 35. Но одна из них должна быть закомментирована, или удалена. Когда работает строка 35, экономия времени больше.
В 1 строке скрипта нужно прописать свой путь к папке с txt-фалами (полный или относительный), отмечено красным.
GETFILELIST($arr, "C:\papka\*.txt") // список всех *.txt файлов в папке "C:\papka\"
Вроде всё)
-
GETFILELIST($arr, "C:\papka\*.txt") // список всех *.txt файлов в папке "C:\papka\"
FOR($n = 0, $n < ARRSIZE($arr))
$file = $arr[$n]
FOR ($a=0, $a<1) // 1 кусок цикла
WAITMS(10)
LCLICK(1011,360)
END_CYC
LCLICK(344,705)
$count = TFCOUNT($file) + 1 // количество строк в файле
FOR ($i = 1, (($i < 150) & ($i < $count))) // 2 кусок
$b = TFREAD($file, $i)
TOCLIP(STRCONCAT("Привет ", $b))
KEYDOWN(#CTRL)
KEYPRESS(#V)
KEYUP(#CTRL)
KEYPRESS(#ENTER)
WAITMS(5)
INC($num) // количество обработанных строк
END_CYC
// INC($num,$i) // количество обработанных строк, по окончании обработки фала
END_CYC
SETTHREAD (log, 0) // когда все файлы обработаны - остановить поток "log"
LOGWRITE ("Всего бработано строк: ", $num) // вывод в лог последней статистики
THREAD(name, 1)
WAIT(1) // частота вывода в лог
LOGCLEAR // чтобы лог не разрастался
LOGWRITE ("В обработке файл: ", $file) // вывод в лог
LOGWRITE ("Обработано строк: ", $num)
END_THREAD
HALT
Скрипт просканирует папку на наличие txt-фалов и будет обрабатывать их по порядку.
Количество обработанных строк стакается в переменную $num, в строке 31. Можно эту строку закомментировать и активировать строку 35. Но одна из них должна быть закомментирована, или удалена. Когда работает строка 35, экономия времени больше.
В 1 строке скрипта нужно прописать свой путь к папке с txt-фалами (полный или относительный), отмечено красным.
GETFILELIST($arr, "C:\papka\*.txt") // список всех *.txt файлов в папке "C:\papka\"
Вроде всё)
Спасибо большое добрый человек! :)
Все работает как ракета, потестил оба варианта, просто пушка )
Удачи и добра! 8)
-
GETFILELIST($arr, "C:\papka\*.txt") // список всех *.txt файлов в папке "C:\papka\"
FOR($n = 0, $n < ARRSIZE($arr))
$file = $arr[$n]
FOR ($a=0, $a<1) // 1 кусок цикла
WAITMS(10)
LCLICK(1011,360)
END_CYC
LCLICK(344,705)
$count = TFCOUNT($file) + 1 // количество строк в файле
FOR ($i = 1, (($i < 150) & ($i < $count))) // 2 кусок
$b = TFREAD($file, $i)
TOCLIP(STRCONCAT("Привет ", $b))
KEYDOWN(#CTRL)
KEYPRESS(#V)
KEYUP(#CTRL)
KEYPRESS(#ENTER)
WAITMS(5)
INC($num) // количество обработанных строк
END_CYC
// INC($num,$i) // количество обработанных строк, по окончании обработки фала
END_CYC
SETTHREAD (log, 0) // когда все файлы обработаны - остановить поток "log"
LOGWRITE ("Всего бработано строк: ", $num) // вывод в лог последней статистики
THREAD(name, 1)
WAIT(1) // частота вывода в лог
LOGCLEAR // чтобы лог не разрастался
LOGWRITE ("В обработке файл: ", $file) // вывод в лог
LOGWRITE ("Обработано строк: ", $num)
END_THREAD
HALT
Скрипт просканирует папку на наличие txt-фалов и будет обрабатывать их по порядку.
Количество обработанных строк стакается в переменную $num, в строке 31. Можно эту строку закомментировать и активировать строку 35. Но одна из них должна быть закомментирована, или удалена. Когда работает строка 35, экономия времени больше.
В 1 строке скрипта нужно прописать свой путь к папке с txt-фалами (полный или относительный), отмечено красным.
GETFILELIST($arr, "C:\papka\*.txt") // список всех *.txt файлов в папке "C:\papka\"
Вроде всё)
Спасибо большое добрый человек! :)
Все работает как ракета, потестил оба варианта, просто пушка )
Удачи и добра! 8)
Что то пошло не так ( :'(
Сегодня выходной ... Немного присмотрелся, увидел что то-то не так, решил закинуть в папку буфера (GETFILELIST($arr, "C:\papka\*.txt")) 2 txt файла на 500 и 2000 строк. Запустил скрипт и понял что он не остановился на "количество обработаных строк 2600+ ", понял что он читает рандомом файлы и строки (
Как сделать что бы он работал по порядку начиная с 1.txt +1... 10.txt и так же шел по строкам в каждом файле ? Или даже просто после прочтения файла удалял его?
Если возможно реализовать удаления файлов после прочтения, считать строки уже тогда будет не актуально.
Спасибо за помощь!
-
Поискал сейчас тоже программу для нарезки файлов по количеству строк. Нашел Text Cleaver. Похоже речь именно о нем. Так вот, он не совсем удобно переименовывает файлы.
Вот в таком порядке их сортирует Clickermann (и это правильно):
add1.txt
add10.txt
add11.txt
...
add19.txt
add2.txt
Проводник Windows сортирует по другой логике.
После нарезки файлов их можно просто все переименовать:
1. Сортировка в Проводнике - в алфавитном порядке, по возрастанию
2. Выделить все файлы - Ctrl + A
3. Правый клик на первом файле, и выбрать "Переименовать"
4. Удалить имя совсем, или написать свое
5. Enter
Так Clickermann будет их обрабатывать в том же порядке, в котором они отображаются в Проводнике.
Строки в файлах скрипт перебирает по порядку - с первой строки и до последней.
Но у нас в цикле условие: FOR ($i = 1, (($i < 150) & ($i < $count)))
Это указывает кликеру читать файлы с первой строки, по очереди, без пропусков, пока не будут прочитаны все строки файла, или пока количество прочитанных строк не превысит 150.
То есть сейчас, в каждом файле скрипт обрабатывает максимум 150 строк, а затем переходит к следующему файлу. Так задумано? Или это ошибка?
Вот переделанный скрипт, с удалением обработанных файлов.
Чтобы не заморачиваться с путями к файлам и не терять скорость на лишних действиях, скрипт помещаем в папку с файлами.
// Этот скрипт положить в папку с обрабатываемыми им файлами
LOGCLEAR
GETFILELIST($arr, "*.txt") // список всех *.txt файлов в папке
FOR($n = 0, $n < ARRSIZE($arr))
$file = $arr[$n]
FOR ($a=0, $a<1) // 1 кусок цикла
WAITMS(10)
LCLICK(1011,360)
END_CYC
LCLICK(344,705)
$count = TFCOUNT($file) + 1 // количество строк в файле
FOR ($i = 1, (($i < 150) & ($i < $count))) // 2 кусок
$b = TFREAD($file, $i)
TOCLIP(STRCONCAT("Привет ", $b))
KEYDOWN(#CTRL)
KEYPRESS(#V)
KEYUP(#CTRL)
KEYPRESS(#ENTER)
WAITMS(5)
// INC($num) // количество обработанных строк
END_CYC
INC($num,$i) // количество обработанных строк, по окончании обработки фала
TFCLEAR($file, 1) // удаление обработанного файла с диска (мимо корзины)
END_CYC
SETTHREAD (log, 0) // когда все файлы обработаны - остановить поток "log"
LOGWRITE ("Всего бработано строк: ", $num) // вывод в лог последней статистики
THREAD(name, 1)
WAIT(1) // частота вывода в лог
LOGCLEAR // чтобы лог не разрастался
LOGWRITE ("В обработке файл: ", $file) // вывод в лог
LOGWRITE ("Обработано строк: ", $num)
END_THREAD
HALT
-
Проблема с сортировкой оказалась всё еще актуальной :-\.
По моему, можно ничего с этим не делать.))
-
GETFILELIST($arr, "C:\papka\*.txt") // список всех *.txt файлов в папке "C:\papka\"
FOR($n = 0, $n < ARRSIZE($arr))
$file = $arr[$n]
FOR ($a=0, $a<1) // 1 кусок цикла
WAITMS(10)
LCLICK(1011,360)
END_CYC
LCLICK(344,705)
$count = TFCOUNT($file) + 1 // количество строк в файле
FOR ($i = 1, (($i < 150) & ($i < $count))) // 2 кусок
$b = TFREAD($file, $i)
TOCLIP(STRCONCAT("Привет ", $b))
KEYDOWN(#CTRL)
KEYPRESS(#V)
KEYUP(#CTRL)
KEYPRESS(#ENTER)
WAITMS(5)
INC($num) // количество обработанных строк
END_CYC
// INC($num,$i) // количество обработанных строк, по окончании обработки фала
END_CYC
SETTHREAD (log, 0) // когда все файлы обработаны - остановить поток "log"
LOGWRITE ("Всего бработано строк: ", $num) // вывод в лог последней статистики
THREAD(name, 1)
WAIT(1) // частота вывода в лог
LOGCLEAR // чтобы лог не разрастался
LOGWRITE ("В обработке файл: ", $file) // вывод в лог
LOGWRITE ("Обработано строк: ", $num)
END_THREAD
HALT
Скрипт просканирует папку на наличие txt-фалов и будет обрабатывать их по порядку.
Количество обработанных строк стакается в переменную $num, в строке 31. Можно эту строку закомментировать и активировать строку 35. Но одна из них должна быть закомментирована, или удалена. Когда работает строка 35, экономия времени больше.
В 1 строке скрипта нужно прописать свой путь к папке с txt-фалами (полный или относительный), отмечено красным.
GETFILELIST($arr, "C:\papka\*.txt") // список всех *.txt файлов в папке "C:\papka\"
Вроде всё)
Спасибо большое добрый человек! :)
Все работает как ракета, потестил оба варианта, просто пушка )
Удачи и добра! 8)
Что то пошло не так ( :'(
Сегодня выходной ... Немного присмотрелся, увидел что то-то не так, решил закинуть в папку буфера (GETFILELIST($arr, "C:\papka\*.txt")) 2 txt файла на 500 и 2000 строк. Запустил скрипт и понял что он не остановился на "количество обработаных строк 2600+ ", понял что он читает рандомом файлы и строки (
Как сделать что бы он работал по порядку начиная с 1.txt +1... 10.txt и так же шел по строкам в каждом файле ? Или даже просто после прочтения файла удалял его?
Если возможно реализовать удаления файлов после прочтения, считать строки уже тогда будет не актуально.
Спасибо за помощь!
Программка которой я режу txt на количество строк "KeyWordKeeper"
Изначально я задумывал 2 цикла:
1.
Почистил лог.
FOR ($a=0, $a<1) // 1 кусок цикла
WAITMS(10)
LCLICK(1011,360)
END_CYC
- это для того что бы клацать на кнопку очистки лога, что бы он не рос...
2. Это сам процесс со строками, из текстового файла скопировать строку в буфер и вставить куда нужно.
Отрабатывает $i < 150 выходит с цикла, - жмет кнопку, чистит лог ) только для этого. И так по идеи должно было быть по кругу.
Только что запустил для теста скрипт что Вы написали:
Создал 2 txt файла закинул в один 2000 строк в другой 750.
Скрипт прочитал по 150 строк из каждого файла и удалил их )
я бы мог изменить значение $i < 150 например на 50000 но тогда, лог будет расти и начнет тормозить ( особенно под конец.
Идея простая (наверное :D), нажать ЛКМ (почистить лог), вставить по очереди 150 строк из файла на 100к строк, нажать ЛКМ. И так по кругу до конца строк в файле и так к следующему.
не знаю на сколько это правильно но команду
HALT
я всегда убираю
//HALT
-
Переделал.)
Очистку лога перенес во внутренний цикл.
Вынес в начало скрипта настройки: удаления файлов (переменная $del) и очистки Лога (переменная $clear).
// Этот скрипт положить в папку с обрабатываемыми им файлами
// Удаление обработанных файлов:
$del = 0 // 1 - удалять; 0 - не удалять
// Очистка Лога:
$clear = 150 // количество обработанных строк до очистки Лога
//--------------------------------
LOGCLEAR
GETFILELIST($arr, "*.txt") // список всех *.txt файлов в папке
FOR($n = 0, $n < ARRSIZE($arr))
$file = $arr[$n]
$count = TFCOUNT($file) + 1 // количество строк в файле
FOR ($i = 1, $i < $count) // 2 кусок
$b = TFREAD($file, $i)
TOCLIP(STRCONCAT("Привет ", $b))
KEYDOWN(#CTRL)
KEYPRESS(#V)
KEYUP(#CTRL)
KEYPRESS(#ENTER)
WAITMS(5)
INC($num) // количество обработанных строк в файлах
INC($e,1) // нарастающая переменная, считает количество строк в Логе
IF($e = $clear) // если обработано 150 строк - очищаем Лог
WAITMS(10)
LCLICK(1011,360)
$e = 0 // обнуляем счетчик строк Лога
LCLICK(344,705)
END_IF
END_CYC
// INC($num,$i) // количество обработанных строк в файлах, по окончании обработки фала
IF($del)
TFCLEAR($file, 1) // удаление обработанного файла с диска (мимо корзины)
END_IF
END_CYC
SETTHREAD (log, 0) // когда все файлы обработаны - остановить поток "log"
LOGWRITE ("Всего бработано строк: ", $num) // вывод в лог последней статистики
THREAD(name, 1)
WAIT(1) // частота вывода в лог
LOGCLEAR // чтобы лог не разрастался
LOGWRITE ("В обработке файл: ", $file) // вывод в лог
LOGWRITE ("Обработано строк: ", $num)
END_THREAD
HALT
-
Переделал.)
Очистку лога перенес во внутренний цикл.
Вынес в начало скрипта настройки: удаления файлов (переменная $del) и очистки Лога (переменная $clear).
// Этот скрипт положить в папку с обрабатываемыми им файлами
// Удаление обработанных файлов:
$del = 0 // 1 - удалять; 0 - не удалять
// Очистка Лога:
$clear = 150 // количество обработанных строк до очистки Лога
//--------------------------------
LOGCLEAR
GETFILELIST($arr, "*.txt") // список всех *.txt файлов в папке
FOR($n = 0, $n < ARRSIZE($arr))
$file = $arr[$n]
$count = TFCOUNT($file) + 1 // количество строк в файле
FOR ($i = 1, $i < $count) // 2 кусок
$b = TFREAD($file, $i)
TOCLIP(STRCONCAT("Привет ", $b))
KEYDOWN(#CTRL)
KEYPRESS(#V)
KEYUP(#CTRL)
KEYPRESS(#ENTER)
WAITMS(5)
INC($num) // количество обработанных строк в файлах
INC($e,1) // нарастающая переменная, считает количество строк в Логе
IF($e = $clear) // если обработано 150 строк - очищаем Лог
WAITMS(10)
LCLICK(1011,360)
$e = 0 // обнуляем счетчик строк Лога
LCLICK(344,705)
END_IF
END_CYC
// INC($num,$i) // количество обработанных строк в файлах, по окончании обработки фала
IF($del)
TFCLEAR($file, 1) // удаление обработанного файла с диска (мимо корзины)
END_IF
END_CYC
SETTHREAD (log, 0) // когда все файлы обработаны - остановить поток "log"
LOGWRITE ("Всего бработано строк: ", $num) // вывод в лог последней статистики
THREAD(name, 1)
WAIT(1) // частота вывода в лог
LOGCLEAR // чтобы лог не разрастался
LOGWRITE ("В обработке файл: ", $file) // вывод в лог
LOGWRITE ("Обработано строк: ", $num)
END_THREAD
HALT
Спасибо Вам большое! :)
Тестил пол дня, в разных вариациях )) все отлично работает, как часы, тумблер только переключил на 1 в "$del = 0 // 1 - удалять; 0 - не удалять", потому что при 0 считывает больше строк (3000+) чем есть в файлах (2750)...
Еще раз спасибо, так в Вашей помощью тут можно машину по картинкам собрать 8)