|
|
|
Выгрузить текст из файла |
|
|
Fire73 |
16.6.2019, 17:49
|
Neophyte
Сообщений: 34
Регистрация: 5.6.2019 Группа: Пользователи Наличность: 0
Пользователь №: 19.343
Возраст: 23
|
Цитата(cirus @ 16.6.2019, 18:19) Код load_array %arr C:\123.txt //log %arr [1] // первая строка из файла //log %arr [2] // вторая
log clear log mode compact
set $regexp "[^ ]+" set #n regexp (#pos $a1 %arr[1] $regexp) // поиск в строке любого текста до пробела if #n = 1 log $a1 end_if
set $regexp "(?<= )[^ ]+" set #n regexp (#pos $a2 %arr[1] $regexp) // поиск в строке текста после пробела if #n = 1 log $a2 end_if
delete_array %arr -1 // удалить первую строку из массива save_array %arr C:\456.txt // сохранить массив в файл, можно в тот же 123.txt end_script Спасибо, ты супер! Как этому научиться?)) У меня еще вопрос, но он чуть чуть не по теме. Вот у меня скрипт создает папки telega1, telega2, telega3... Как сделать так, чтобы при создании очередной папки, скрипт для начала узнал, свободно ли название папки? Если занято, то создал бы с другой цифрой по порядку: telega4
|
|
|
|
Fire73 |
16.6.2019, 18:38
|
Neophyte
Сообщений: 34
Регистрация: 5.6.2019 Группа: Пользователи Наличность: 0
Пользователь №: 19.343
Возраст: 23
|
Цитата(cirus @ 16.6.2019, 19:19) Код dir (%result "C:\12345" "*" norecursion) // узнать количество файлов/папок в папке C:\12345 set %z [1] size(%result) + 1 // прибавить 1 к количеству dircreate (C:\12345\telega%z[1]) // создать папку telega end_script При каждом запуске скрипта в папку C:\12345 будет добавляться папка telega1, telega2 и т. д. При этом в папке C:\12345 не должно быть других файлов и папок, иначе придётся проверять сколько из них не telega. Не хочу надоедать, подумал, по форуму поискал, но не нашел ответа Нюанс образовался, так как скрипт создает новую папку и далее он должен воспользоваться функцией filecopy. То есть в только что созданную папку отправляет .exe файл, далее его запускает. Чтобы было понятнее напишу "пример" : C:\12345\telega%z[1]\telegram.exe Как решить этот вопрос, чтобы туда закидывался файл и запускался?
|
|
|
|
FREEON |
19.6.2019, 1:04
|
Journeyman
Сообщений: 365
Регистрация: 14.2.2017 Группа: Пользователи Наличность: 1316
Пользователь №: 18.346
Возраст: 25
|
пытаюсь конвертировать данные из таблицы(тхт) в более читабельный вариант...вроде как числа, разбирать строку и конвертировать их выходит...но собрать ее из полученных данных не получается, чо делаю не так Код log clear log mode compact set %arr [1 10] 1000,550,9200000,1250,55000,999 //для примера получаем такую строку из файла set delimiter ',' //устанавливаем делиметр что бы смогли получить строку и разбить на подстроки init_arr %a %arr [1 10] //представляем ее в виде подстрок %a [1 1] %a [1 2] %a [1 3] %a [1 4] и т.д. set delimiter '' //возвращаем по умолчанию что бы могли работать //тут нужно обработать все имеющиеся значения подстроки for #i 1 size(%a) log число подстроки %a [#i 1] if %a [#i 1] < 1000 //число меньше 1кг запишем в грамах //set %r %a [#i 1]) log %a [#i 1]г, set $z [#i 1] %a [#i 1]г, //записать результат end_if if %a [#i 1] > 999 and %a [#i 1] < 1000000 //число от 1кг и до 1т запишем в КГ set %am math.dbl (%a [#i 1] / 1000) //переводим в килограммы gosub convert log %am [1]кг, set $z [#i 1] %a [1]кг, //записать результат end_if if %a [#i 1] > 999999 //число от 1т запишем в Т set %am math.dbl (%a [#i 1] / 1000000) //переводим в тонны gosub convert log %am [1]т, set $z [#i 1] %am [1]т, //....записать результат end_if
end_for log $z [1] //собрать строку и вывести её end_script :convert //log чо сокророщаем %am [1] set $temp %am [1] set $c trunc($temp) set $b frac($temp) while 1 = 1 set $temp copy($b size($b) 1) if $temp = 0 set $b Delete($b size($b) 1) else break end_if end_while set %am[1] $c if $b != "" set %am [1 2] "," set %am [1 3] $b end_if //log получаем %am [1] return
|
|
|
|
FREEON |
19.6.2019, 10:29
|
Journeyman
Сообщений: 365
Регистрация: 14.2.2017 Группа: Пользователи Наличность: 1316
Пользователь №: 18.346
Возраст: 25
|
Цитата(cirus @ 19.6.2019, 1:38) Для примера: Код init_arr %a (1) 1кг 550г 9т set $z ""
log clear log mode compact for #i 1 size(%a[]) log %a[1 #i] set $z $z %a[1 #i] end_for log $z end_script Благодарю, помог. Ток в моем случае size пришлось оставить таким каким был...массивы это прикольно но темная и неисследованная сторона код
Код log clear log mode compact set %arr [1 10] 1000,550,9200000,1250,55000,999 //для примера получаем такую строку из файла log %arr [1 10] set delimiter ',' //устанавливаем делиметр что бы смогли получить строку и разбить на подстроки init_arr %a %arr [1 10] //представляем ее в виде подстрок %a [1 1] %a [1 2] %a [1 3] %a [1 4] и т.д. set delimiter '' //возвращаем по умолчанию что бы могли работать //тут нужно обработать все имеющиеся значения подстроки set delimiter '' for #i 1 size(%a) //log число подстроки %a [#i 1] if %a [#i 1] < 1000 //число меньше 1кг запишем в грамах //log %a [#i 1]г, set $z $z %a [#i 1]г, //записать результат end_if if %a [#i 1] > 999 and %a [#i 1] < 1000000 //число от 1кг и до 1т запишем в КГ set %am math.dbl (%a [#i 1] / 1000) //переводим в килограммы gosub convert //log %am [1]кг, set $z $z %am [1]кг, //записать результат end_if if %a [#i 1] > 999999 //число от 1т запишем в Т set %am math.dbl (%a [#i 1] / 1000000) //переводим в тонны gosub convert //log %am [1]т, set $z $z %am [1]т, //....записать результат end_if
end_for log $z //собрать строку и вывести её end_script :convert //log чо сокророщаем %am [1] set $temp %am [1] set $c trunc($temp) set $b frac($temp) while 1 = 1 set $temp copy($b size($b) 1) if $temp = 0 set $b Delete($b size($b) 1) else break end_if end_while set %am[1] $c if $b != "" set %am [1 2] "," set %am [1 3] $b end_if //log получаем %am [1] return
|
|
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|