@Ajshma Это больше проблема с виндой. Если скопировать действие и перенести в другой скрипт - тоже сломается. Я как это у себя исправил это, попробую найти инструкцию
Построчное чтение файла.
-
V2.1
sf_file_str.zip
commands описание start получить первую строку end получить последнюю строку start i_starti_endполучить от начала файла от строки номер i_startдо строки номерi_endend i_starti_endполучить от конца файла (реверс) от строки номер i_startдо строки номерi_endrand получить случайную строку search strout-firstнайти строку, начинающуюся с strsearch strout-allнайти все строки, начинающиеся с strvar full_path_exe = "D:\\test\\rand_str.exe"; var full_path_file = "D:\\test\\res.txt"; var commands = "your commands"; var args = full_path_file + " " + commands; native_async("processmanager", "start", JSON.stringify({location: full_path_exe, working_folder: "", waitfinish: true, arguments: args, version: 2}))! try{ var split = _result().split(",") var output= base64_decode(split[0]) var error_msg= base64_decode(split[1]) }catch(e){ var output= _result() } log(output);// для пробелов var str = "\"строка с пробелом\""как получить full_path_exe:
V1
пример кода
rand_str.exe - выдаёт случайную строку
file_res - ваш файл из которого надо получить случайную строкуvar file_exe = "D:\\test\\rand_str.exe"; var file_res = "D:\\test\\res.txt"; native_async("processmanager", "start", JSON.stringify({location: file_exe, working_folder: "", waitfinish: true, arguments: file_res, version: 2}))! try{ var split = _result().split(",") var output= base64_decode(split[0]) var error_msg= base64_decode(split[1]) }catch(e){ var output= _result() } log(output);rand_str.exe
преимущества: скорость работы и низкое потребление ресурсов.
p.s. осталось научиться из rust компилировать dll для BAS
-
@super84 это вроде как подгружает в оперативку данные файла и метаданные/индекс для работы ресурса.
тут же более экономичный по ресурсам железа способ получить случайную строку из файла.(на линуксе со старого hdd из 5.2мб файла с прокси в среднем за 0.009-0.010 сек)
в пакете набор для получения строк под разные параметры есть, я включил только случайную строку.(получить первую или последнею строку, вывести строки в цикле от 1 до последней или от последней до первой. реализация получения конкретной строки(по порядковому номеру) не смотрел какие варианты реализации есть) -
Добавлю в копилку. Возможно кому-то пригодится вариант батника, не помню когда-то нашел давно:randline.bat
А еще, если нужно мешать мега- и гигабайтные файлы - берите shuf.exe из комплекта git, самое быстрое решение.
-
@tet-vivi said in Построчное чтение файла.:
у версии 2 ошибка с функцией rand
исправлена ошибка, или просто ошибка?
