Что нового

Необходим скрипт для мониторинга папки и записи имен объектов в файл.

amorphyc

Новичок
Сообщения
45
Репутация
0
Версия AutoIt: 3.

Описание:
При запуске скрипт сканирует папку (конкретно - Рабочий стол, но желательно, чтоб можно было задавать самому любую), записывает имена найденных объектов (ярлыков и других файлов) в имеющийся файл .ini (в этом файле есть и другие записи). При каждом запуске скрипт сопоставляет информацию из .ini-файла и найденые объекты, если в папке найден новый объект - скрипт добавляет запись, если есть запись, а объект отсутствует - запись удаляется. Если возможно подобное - объясню нюансы.
Примечания:
Скрипт нужен для создания скина для Rainmeter. Может, поклонники этой программы откликнутся?
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
даю скрипт для общего мониторинга папки
 
Автор
A

amorphyc

Новичок
Сообщения
45
Репутация
0
joiner спасибо большое, некоторые скрипты выполняют примерно похожую задачу, но я абсолюнтый ноль в AutoIt, и не смогу отредактировать как надо. :( Я пришел сюда попросить помощи, мы хотим сделать скин для Rainmeter, выполняющий роль проводника. И необходим вот такой скрипт, как я написал выше, чтоб при каждом запуске он сканировал папку и записывал в файл конфигурации .ini список файлов, которые находятся в папке, и удалял записи об уже удаленных файлах. А запись для каждого файла должна выглядеть вот так:

[MeterString]
Meter=String
Text=Имя файла
AntiAlias=1

В общем - скрипт должен при обращении редактировать файл конфигурации согласно текущему количеству файлов, и сам выключаться.

Если кто поможет - буду очень благодарен! :beer:
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
так?

Код:
#include <FileOperations.au3>
$folder = FileSelectFolder('', '')
FileDelete(@ScriptDir & '\log.ini')
$file = _FO_FileSearch($folder, "*", True, 0, 2, 2)
For $i = 0 To UBound($file) - 1
	FileWrite('log.ini',' [MeterString]'& @CRLF & 'Meter=String' & @CRLF & 'Text=' & $file[$i] & @CRLF & 'AntiAlias=1' & @CRLF)
Next




Добавлено:
Сообщение автоматически объединено:

все включаемые библиотеки типа FileOperations.au3 брать здесь http://autoit-script.ru/index.php/topic,10070.0.html
 
Автор
A

amorphyc

Новичок
Сообщения
45
Репутация
0
joiner
Ух ты!!! Сперва не понял немного, теперь разобрался! :ok: Замечательно! И один нюанс - в .ini-файле есть шапка с параметрами, как сделать чтоб скрипт не стирал ее. И как сделать чтоб не выскакивало окно с предложением выбора папки, а просто прописать самому один раз и все, где эта строка в коде?
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
скомпилировал
http://narod.ru/disk/61372553001.14dc2654074e16be1839bafea40ee79a/log.exe.html
 
Автор
A

amorphyc

Новичок
Сообщения
45
Репутация
0
Шапка примерно такая, подредактировать в скрипте некоторые строки я смогу и сам:

[Rainmeter]
Update=10

[Metadata]
License=CC 3.0
Version=1.0

[mCPU]
Plugin=Plugins\PowerPlugin.dll
Measure=CPU
PowerState=MHZ

Или может удобнее вынести ее в отдельный файл, а скрипт просто будет брать из него текст и вставлять в шапку log.ini ? Как удобней написать?
А скомпилировать .exe я умею, только если один скрипт. А как скомпилировать два? там же два используются?
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
значит в лог файле изменяется только строка с именем файла. так? если так. то все остальные значения постоянные. значит приведи пример структуры файла , который создается. лучше прикрепи сюда. посмотрим и напишем :smile:
 
Автор
A

amorphyc

Новичок
Сообщения
45
Репутация
0
:smile: Огромное спасибо за отзывчивость! Дело тут в том, что конечная форма .ini-файла еще не ясна, мы ее еще 37 раз изменим, пока добьемся конечного результата, поэтому я и пытаюсь разобраться в структуре скрипта, чтоб сам смог поменять что потребуется. Вся загвоздка была в том, что количество файлов в папке (на рабочем столе) не постоянно, и поэтому для того, чтоб правильно отобразить нужен был скрипт, который создает файл конфигурации .ini с реально существующими в данный момент файлами. А примерная структура его - вот такая шапка, как написано выше, и далее список файлов и все. Вот в идеале, наверное, сделать чтоб шапка была в отдельном файле, т.к. туда возможно будет дописывать другие параметры. :smile: Ну, вот как-то так, надеюсь понятно объяснил. А уж если что не смогу исправить сам - я, с вашего позволения, обращусь за помощью... :beer: с меня.
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
тогда полная версия с шапкой
Код:
#include <FileOperations.au3>
$log = '[Rainmeter]' & @CRLF & _
'Update=10' & @CRLF & _
'[Metadata]'  & @CRLF & _
'License=CC 3.0'  & @CRLF & _
'Version=1.0'  & @CRLF & _
'[mCPU] '  & @CRLF & _
'Plugin=Plugins\PowerPlugin.dll' & @CRLF & _
'Measure=CPU'  & @CRLF & _
'PowerState=MHZ'
$folder = FileSelectFolder('', '')
$write = FileOpen('log.ini',2)
FileWrite($write,$log & @CRLF)
$file = _FO_FileSearch($folder, "*", True, 0, 2, 2)
For $i = 0 To UBound($file) - 1
	FileWrite($write,'[MeterString]'& @CRLF & 'Meter=String' & @CRLF & 'Text=' & $file[$i] & @CRLF & 'AntiAlias=1' & @CRLF)
Next
FileClose($write)
 
Автор
A

amorphyc

Новичок
Сообщения
45
Репутация
0
Огромное преогромное спасибо! :laugh: Пойду соратников требушить, и в коде разбираться! Если что - приду за советом. ;D
 

Bumos

Новичок
Сообщения
1
Репутация
0
Немного переработал скрипт и проверил работоспособность в Rainmeter под Windows 7 - все работает. Остается навести красоту. Да было бы неплохо добавить иконки к названиям файлов. Ну и для Windows XP указать другой путь к рабочему столу.
А вообще по хорошему при первом запуске скрипта нужно создавать ini файл где будет лежать шапка для log.ini и путь к папке какую нужно сканировать. Но это уже в следующей серии. :smile: :IL_AutoIt_1:
Код:
#include <FileOperations.au3>
$log = '[Rainmeter]' & @CRLF & _
'Update=10' & @CRLF & _
'[Metadata]'  & @CRLF & _
'License=CC 3.0'  & @CRLF & _
'Version=1.0'  & @CRLF & _
'[mCPU] '  & @CRLF & _
'Plugin=Plugins\PowerPlugin.dll' & @CRLF & _
'Measure=CPU'  & @CRLF & _
'PowerState=MHZ'
;$folder = FileSelectFolder('', '')
;$folder =_FO_FolderSearch(@UserProfileDir&'\Desktop', '*', True, 0, 1, 0)
$write = FileOpen('log.ini',2)
FileWrite($write,$log & @CRLF)
$file = _FO_FileSearch(@DesktopDir, "*", True, 0, 3, 2)
$fileclk = _FO_FileSearch(@DesktopDir, "*", True, 0, 1, 2)
$j=0
For $i = 0 To UBound($file) - 1
    FileWrite($write,'[MeterString'&$i&']'& @CRLF & 'Meter=String'& @CRLF & 'X=r' & @CRLF & 'Y='& $j & @CRLF & 'Text=' & $file[$i] & @CRLF & 'AntiAlias=1' & @CRLF & 'LeftMouseUpAction=!Execute ["'&$fileclk[$i]&'"]'& @CRLF)
	$j=$j+20
Next
FileClose($write)
 
Верх