Автокликер Clickermann :: Форум

Основной раздел => Общие вопросы => Topic started by: Qwerry on October 11, 2017, 03:25:33 PM

Title: Список файлов, находящихся в указанной папке
Post by: Qwerry on October 11, 2017, 03:25:33 PM
Доброго времени суток.
Имеется папка, в которой находится несколько картинок (их количество может меняться). Нужно занести в массив все названия файлов из этой папки.
Подскажите, пожалуйста, как можно реализовать?
(Конечная цель - поиск  по очереди этих картинок. Понимаю, что можно назвать их в духе 1, 2, 3, но не хотелось бы задавать количество картинок вручную)
Title: Re: Список файлов, находящихся в указанной папке
Post by: Oraven on October 11, 2017, 06:08:49 PM
Требуется последняя бетта 4.13 Там функция GETFILELIST заработала как надо.
http://crapware.aidf.org/forum/index.php?topic=356.msg23510#msg23510 (http://crapware.aidf.org/forum/index.php?topic=356.msg23510#msg23510)

Code: (clickermann) [Select]
$path = "Image\" // Путь до папки с картинкой

GETFILELIST($a_image, STRCONCAT($path,"*.bmp")) // Получаем список файлов в массив
GETSCREEN
FOR($i=0,$i<ARRSIZE($a_image))  // Перебор списка 
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, STRCONCAT($path,$a_image[$i]), -1, 100)
      LCLICK($_return1, $_return2)
      WAITMS(100)
   END_IF   
END_CYC
Title: Re: Список файлов, находящихся в указанной папке
Post by: Qwerry on October 11, 2017, 09:32:17 PM

Классно) Спасибо, буду осваивать новую версию :)
Title: Список файлов, находящихся в указанной папке и запуск нужного
Post by: Mitriy163 on August 16, 2018, 11:27:11 AM
Требуется последняя бетта 4.13 Там функция GETFILELIST заработала как надо.
http://crapware.aidf.org/forum/index.php?topic=356.msg23510#msg23510 (http://crapware.aidf.org/forum/index.php?topic=356.msg23510#msg23510)

Code: (clickermann) [Select]
$path = "Image\" // Путь до папки с картинкой

GETFILELIST($a_image, STRCONCAT($path,"name[b]*[/b].bmp")) // Получаем список файлов в массив
GETSCREEN
FOR($i=0,$i<ARRSIZE($a_image))  // Перебор списка 
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, STRCONCAT($path,$a_image[$i]), -1, 100)
      LCLICK($_return1, $_return2)
      WAITMS(100)
   END_IF   
END_CYC

вопрос следующий, как выполнить файл из списка при помощи radiobox("Выберете пункт", $arr[0]):
у меня есть проекты по Работе, Домашние, Игры, Прочие... работа_name.cms, картинки_name.cms...
Code: (clickermann) [Select]
GETFILELIST($arr, "Script\name[b]*[/b].cms")) // Получаем список файлов в массив
for($i=0, $i< arrsize($arr))
   print($arr[$i])
end_cyc
$res = radiobox("Выберете пункт", [b]$arr[/b]) - как вместо $arr вставить переменную (количество) найденных файлов
...
а после выбора реализовать запуск нужного скрипта?

другими словами хочу создать меню проектов.
Title: Re: Список файлов, находящихся в указанной папке
Post by: Oraven on August 16, 2018, 01:45:56 PM
Очевидно так, а в чем смысл.
Code: (clickermann) [Select]
GETFILELIST($arr, "Script\name[b]*[/b].cms") // Получаем список файлов в массив
for($i=0, $i<arrsize($arr))
   print($arr[$i])
end_cyc

$res = RADIOBOX("Выберете пункт", arrsize($arr))
Title: Список файлов, находящихся в указанной папке и запуск нужного
Post by: Mitriy163 on August 16, 2018, 03:32:54 PM
Очевидно так, а в чем смысл.
Code: (clickermann) [Select]
$res = RADIOBOX("Выберете пункт", arrsize($arr))
так он выводит количество найденных файлов
я пока остановился на таком решении:
Code: (clickermann) [Select]
TFCLEAR("file.cms", 0)
...
getfilelist($arr, $list) //$list предменю с путями, тут не указан

for($i=0, $i< arrsize($arr))
   print($arr[$i])
end_cyc

for($i=arrsize($arr), $i< 21)
   ARRPUSH($arr, "пусто")
end_cyc

$res = radiobox("Выберете пункт", $arr[0], $arr[1], $arr[2], $arr[3], $arr[4], $arr[5], $arr[6], $arr[7], $arr[8], $arr[9], $arr[10], $arr[11], $arr[12], $arr[13], $arr[14], $arr[15], $arr[16], $arr[17], $arr[18], $arr[19], $arr[20])

if ($res > 0)
   print("Вы выбрали: ", $arr[$res-1])
   DEFINE($var, $arr[$res-1])
   
   TFREADARR($var, $a)
   TFWRITEARR("file.cms", $a)
else
   print("Вы ничего не выбрали")
end_if

WAIT(3)

#include "file.cms"
halt
но возникла проблемма с #include "file.cms" он почему то запускается первым, то есть я указал на нужный файл, он его записывает в file.cms, но #include запускается до выполнения всего скрипта, получается, при последующих запусках, запускается предыдущий файл, хотя файл обновляется сразу...
Title: Re: Список файлов, находящихся в указанной папке
Post by: dramster on August 16, 2018, 08:52:07 PM
Кирил  описал выше  в чем дело. Так что скрипт должен выглядеть примерно так:
Code: (clickermann) [Select]
$list = "E:\test\*.*"


getfilelist($arr, $list)

for($i=0, $i< arrsize($arr))
   print($arr[$i])
end_cyc

for($i=arrsize($arr), $i< 21)
   ARRPUSH($arr, "пусто")
end_cyc

$res = radiobox("Выберете пункт‚", $arr[0], $arr[1], $arr[2], $arr[3], $arr[4], $arr[5], $arr[6], $arr[7], $arr[8], $arr[9], $arr[10], $arr[11], $arr[12], $arr[13], $arr[14], $arr[15], $arr[16], $arr[17], $arr[18], $arr[19], $arr[20])

if ($res > 0)
   print("Вы выбрали: ", $arr[$res-1])
else
   print("Вы ничего не выбрали")
end_if

WAIT(1)


SWITCH($res)
   CASE(1)
      #include "E:\test\test1.cms"
   CASE(2)
      #include "E:\test\test2.cms"
   CASE(3)
      #include "E:\test\test3.cms"
   CASE(4)
      #include "E:\test\test4.cms"
   CASE(5)
      #include "E:\test\test5.cms"
END_SWITCH

halt

Только вот у меня почему то в последней версии КМ инклуд с полным путем не работает  :-\ . Пишет что файла такого нет... а он то есть. Не пойму в чем дело, мож защита в ОС какая...



Глянул в справку:
Quote
#include - Вставляет в это место содержимое текстового файла из папки проекта.
так что придется извернуться как-то по другому.
Title: Re: Список файлов, находящихся в указанной папке
Post by: dramster on August 16, 2018, 10:42:39 PM
Только вот у меня почему то в последней версии КМ инклуд с полным путем не работает  :-\ . Пишет что файла такого нет... а он то есть
Вероятно, русское название одной из папок пути или не читаемые символы в названии.
Да не, потестил  в разных каталогах, и прямо из корня диска, ни в какую. В 4.13 выдает ошибку об отсутствии файла, в старших версиях просто скрипт с инклудом не запускается.
Если путь относительно папки проекта, то все норм, даже если инклуд в подкаталоге (относительно папки проекта).
Title: Re: Список файлов, находящихся в указанной папке и запуск нужного
Post by: Mitriy163 on August 17, 2018, 05:21:24 AM
Только вот у меня почему то в последней версии КМ ...
решили проблему по другому, но столкнулись с новой проблемой :) на 4.12 работает, а на 4.13 нет
Code: (clickermann) [Select]
$list_1 = INPUTBOX("message", "", 10)
   print($list_1)

if ($list_1 = 0)
   print("Отмена")
   halt
end_if

getfilelist($arr, "*"$list_1"*.cms")
   print($arr)
for($i=arrsize($arr), $i< 21)
   ARRPUSH($arr, "Пусто")
end_cyc

$list_2 = radiobox("Выберете название скрипта:", $arr[0], $arr[1], $arr[2], $arr[3], $arr[4], $arr[5], $arr[6], $arr[7], $arr[8], $arr[9], $arr[10], $arr[11], $arr[12], $arr[13], $arr[14], $arr[15], $arr[16], $arr[17], $arr[18], $arr[19], $arr[20])

if ($list_2 > 0)
   $list_3 = DIALOGBOX("Вы выбрали: "$arr[$list_2-1],4,2)
   
   if ($list_3 = 6)
      print("Вы выбрали: ",$arr[$list_2-1])
      TFCLEAR("Script_Start_Config.cms", 0)
      TFREADARR($arr[$list_2-1], $ara)
      TFWRITEARR("Script_Start_Config.cms", $ara)
      TFWRITE("Script_Start_Config.cms", "#Autorun")
      EXECUTE("Script_Start_Config.bat")
      HALT(1)
   else
      print("Отмена")
      halt
   end_if
else
   print("Отмена")
   halt
end_if
"*"$list_1"*.cms" в 4.12 понимает что от него хотят, ищет искомое слово на кириллице, в 4.13 на русском точно не ищет если проблема в этом.
Quote from: Script_Start_Config.bat
Code: (txt) [Select]
start ../Clickermann.exe Script_Start_Config.cms
Title: Re: Список файлов, находящихся в указанной папке
Post by: Vint on August 17, 2018, 09:56:56 AM
А что это вообще такое?
Code: (clickermann) [Select]
getfilelist($arr, "*"$list_1"*.cms")
что за набор символов.
Возможно там должно быть что-то вроде этого:
Code: (clickermann) [Select]
getfilelist($arr, STRCONCAT($list_1, "\*.cms"))
Ещё с ранних сообщений кочует вот такая строка с обрывками тэгов, тоже хрень
Code: (clickermann) [Select]
GETFILELIST($arr, "Script\name[b]*[/b].cms"))
Title: Re: Список файлов, находящихся в указанной папке
Post by: Vint on August 17, 2018, 10:20:52 AM
Может, ну его встроенный радио? Ему жёстко прописывать нужно пункты и с этим или морока или некрасиво.

Code: (clickermann) [Select]
#include "Window.cms"


$path = INPUTBOX("Введите путь", "", 10)
IF($path = 0)
    LOGWRITE("Отмена")
    HALT
END_IF
$path = STRCONCAT($path, "\")
LOGWRITE("задан путь: ", $path)

GETFILELIST($items, STRCONCAT($path, "*.cms"))
IF(ARRSIZE($items) = 0)
    LOGWRITE("В директории нет подходящих файлов")
    HALT
END_IF

FOR($i=0, $i < ARRSIZE($items))
    LOGWRITE($items[$i])
END_CYC


Window_select(101, "Запустить скрипт:", 10) // ещё вариант вместо 101, указать 102
IF($return = -1)
    LOGWRITE ("Кнопка не нажата, время вышло или окно закрыто принудительно")
ELSE
    LOGWRITE("Запускаем ", $items[$return-1])
    EXECUTE(STRCONCAT($path, $items[$return-1]))
END_IF

HALT
Title: Список файлов, находящихся в указанной папке и запуск нужного
Post by: Mitriy163 on August 17, 2018, 10:46:59 AM
А что это вообще такое?
Code: (clickermann) [Select]
getfilelist($arr, "*"$list_1"*.cms")что за набор символов.
это строка поиска, найти список файлов содержащие $list_1, да все, тему можно считать закрытой, код доработали, все работает, всем спасибо.
Title: Re: Список файлов, находящихся в указанной папке и запуск нужного
Post by: Vint on August 17, 2018, 11:48:35 AM
это строка поиска, найти список файлов содержащие $list_1, да все, тему можно считать закрытой, код доработали, все работает, всем спасибо.
Что хотели получить я понял, вопрос был о синтаксисе. Написано неправильно и если даже оно на какой-то версии могло проскочить, так писать не нужно, чтоб потом не искать причины неправильной работы.

Тогда так должно быть
Code: (clickermann) [Select]
getfilelist($arr, STRCONCAT("*", $list_1, "*.cms"))
Title: Re: Список файлов, находящихся в указанной папке и запуск нужного
Post by: Mitriy163 on August 17, 2018, 12:30:02 PM
... так писать не нужно, чтоб потом не искать причины неправильной работы.

Тогда так должно быть
Code: (clickermann) [Select]
getfilelist($arr, STRCONCAT("*", $list_1, "*.cms"))
понял, попробую, возможно из-за этого и не работал на 4.13
Title: Re: Список файлов, находящихся в указанной папке
Post by: clicker_student on May 02, 2019, 09:45:52 PM
Искал информацию по функции GETFILELIST(), насколько понял, написал такой код
Code: (clickermann) [Select]
// выведем отладочные сообщения
$line = STRCONCAT("Получим список файлов в папке D:\MyFolder\*.csv")
TFWRITE("log.txt",$line)
GETFILELIST($files, "D:\MyFolder") // Получаем список файлов в массив
$line = STRCONCAT("В папке D:\MyFolder найдено файлов: ",ARRSIZE($files))
TFWRITE("log.txt",$line)

работает.

В справке сказано
Quote
    История развития программы
    v4.13.014 (16.05.18)
    + Ядро
      + Переход на Юникод, теперь в файлах применяется кодировка UTF-8
      + Создана 64-битная версия программы
    ....
        + Доработка KEYSTRING(), теперь он сам жмет Shift
        + Исправление GETFILELIST()
        + Исправление GETDIRLIST()
в самой справке описания функции нет.  Подскажите как ею пользоваться -что можно, а что нельзя.
И еще бы по GETDIRLIST().
Спасибо
Title: Re: Список файлов, находящихся в указанной папке
Post by: dramster on May 02, 2019, 10:06:40 PM
Последняя стабильная версия 4.13, справка:
(https://i.imgur.com/RAgUg65.png)

Бета 4.14, справка:
(https://i.imgur.com/SbgtwGk.png)
Title: Re: Список файлов, находящихся в указанной папке
Post by: clicker_student on May 02, 2019, 11:11:26 PM
Да, ступил, извиняюсь  :-\
Я искал поиском в справке  и не нашел почему то. А сейчас поиск сразу дал результат.
Больше ничего в оправдание сказать не могу  :-X