|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [Архив - Часть 1.3] AutoIt скрипты |
|
[Архив - Часть 1.3] AutoIt скрипты
|
Старожил Сообщения: 250 |
Внимание! Тема переведена в архивное состояние (настоятельно рекомендуется к прочтению/поиску) Руководство к действию по работе c AutoIt. Помогите пожалуйста. Нужен маленький скриптик для решения некоторых рутинных задачь. Вот что нужно сделать последовательно: 1) в папке DIR1 находим и удаляем файлы в названии которых присутствует text_1 2) в папке DIR2 находим xxx.sif и удаляем строки, в которых присутствует text_1 3) в папке DIR3 находим xxx.inf и добавляем в его секцию [XXX] несколько строчкек (text_2, text_3, ..., text_n) 4) в папке DIR4 находим yyy.inf ищем в его секции [YYY] text_4 и заменяем его на text_5 5) сохраняем все изменения и выводим отчёт о проделанной работе :-) Заранее благодарен. |
|
Отправлено: 05:05, 03-12-2006 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать DenchikK
Цитата:
Построение цикла, должно быть так: Тут For $i = 1, означает что для переменной $i, в теле цикла, будет присваиваться возрастающее значение от 1 и до NN (вместо NN нам и нужно подставить общее число элементов нашего массива, в данном случае, это $Logins_Array[0][0], иногда, обычно самодельные массивы, могут быть построены неверно, поэтому надёжнее проверять общее число массива, используя функцию Ubound, но при этом нужно отнять 1, чтобы нулевой элемент не учитывался: Или используем нулевой элемент для выявления общего числа элементов массива (не самый надёжный метод): В справке написано, что функция IniReadSection(), возвращает двумерный массив, теперь его элементы присваиваются так: Logins_Array[N][0] = Ключь в Ini-Файле Logins_Array[N][1] = Значение этого же ключа (ключ это то что идёт перед знаком ровно в Ini-файле). Цитата:
Но в теле условия (If ... Then ... EndIf), массив обрабатывается совсем другой... GUICtrlCreateRadio($Logins_Array[$i][1], 10, $Top)... Вот отсюда и может быть вызвана ошибка. Попытка №2 ![]() (Добавил также немного проверок на ошибочность). #include <GUIConstants.au3> If WinExists(@ScriptName) Then Exit AutoItWinSetTitle(@ScriptName) AutoItSetOption("TrayIconDebug", 1) AutoItSetOption("SendKeyDelay", 60) AutoItSetOption("MouseCoordMode", 0) Global $group_1, $group_2, $group_3, $RadioArr[1], $Links_Array, $Logins_Array, $Pass_Array, $Servers_Array, $Secrets_Array ; Запуск программы Run ('avaload.exe') ; Считывание Данных $Logins_Array = IniReadSection("ava.ini", "logins") $Pass_Array = IniReadSection("ava.ini", "pass") $Links_Array = IniReadSection("ava.ini", "links") $Servers_Array = IniReadSection("ava.ini", "servers") $Secrets_Array = IniReadSection("ava.ini", "secrets") ; Построение GUI GUICreate("Автозаполнение", 340, 350) If IsArray($Logins_Array) Then ReDim $RadioArr[UBound($Logins_Array)] $Top = 20 For $i = 1 To UBound($Logins_Array)-1 $RadioArr[$i] = GUICtrlCreateRadio($Logins_Array[$i][1], 10, $Top) $Top += 20 Next EndIf $Start = GUICtrlCreateButton("Заполнить", 210, 20, 120, 20) $Close = GUICtrlCreateButton("Выход", 210, 40, 120, 20) $Server1 = GUICtrlCreateButton("Сервер 1", 210, 60, 120, 20) $Server2 = GUICtrlCreateButton("Сервер 2", 210, 80, 120, 20) $group_1 = GUICtrlCreateGroup ("Выбор Аккаунта", 5, 5, 190, 340) $group_2 = GUICtrlCreateGroup ("Кнопочки", 205, 5, 130, 100) $group_3 = GUICtrlCreateGroup ("Описание", 205, 105, 130, 240) $Label1 = GUICtrlCreateLabel(" Описание Работы", 210, 120) $Label2 = GUICtrlCreateLabel("1. Впишите в ava.ini", 210, 140) $Label3 = GUICtrlCreateLabel("линки,логины,пароли,", 210, 155) $Label4 = GUICtrlCreateLabel("параметры серверов.", 210, 170) $Label5 = GUICtrlCreateLabel("2. Выберите Сервер", 210, 185) $Label6 = GUICtrlCreateLabel("3. Выберите пустой ", 210, 200) $Label7 = GUICtrlCreateLabel("аккаунт для заливки. ", 210, 215) $Label8 = GUICtrlCreateLabel(" Принцип работы: ", 210, 235) $Label9 = GUICtrlCreateLabel("Например, выбираем", 210, 250) $Label10 = GUICtrlCreateLabel("первый логин,в него", 210, 265) $Label11 = GUICtrlCreateLabel("будет заливаться ", 210, 280) $Label12 = GUICtrlCreateLabel("первый линк. и.т.д", 210, 295) $Label13 = GUICtrlCreateLabel(" Удачи! ", 210, 315) GUISetState () ; Основная Работа Скрипта GUISetState() ; display the GUI While 1 Switch GUIGetMsg() Case -3, $Close Exit Case $Server1 If UBound($Servers_Array) < 2 Or UBound($Secrets_Array) < 2 Then MsgBox(48, "Ошибка", "Извените, невозможно продолжить, видимо не были найдены данные серверов") ContinueLoop EndIf WinActivate ("AvaRemoteLoad") ControlClick ( 'AvaRemoteLoad', '', "Button4") WinWaitActive ('Настройки') ControlSetText ( 'Настройки', '', 'Edit1', $Servers_Array[1][1]) ControlSetText ( 'Настройки', '', 'Edit2', $Secrets_Array[1][1]) ControlClick ( 'Настройки', '', "Button2") Case $Server2 If UBound($Servers_Array) < 3 Or UBound($Secrets_Array) < 3 Then MsgBox(48, "Ошибка", "Извените, невозможно продолжить, видимо не были найдены данные серверов") ContinueLoop EndIf WinActivate ("AvaRemoteLoad") ControlClick ( 'AvaRemoteLoad', '', "Button4") WinWaitActive ('Настройки') ControlSetText ( 'Настройки', '', 'Edit1', $Servers_Array[2][1]) ControlSetText ( 'Настройки', '', 'Edit2', $Secrets_Array[2][1]) ControlClick ( 'Настройки', '', "Button2") Case $Start Local $iSet = 0 For $i = 1 To UBound($Logins_Array)-1 If GUICtrlRead($RadioArr[$i]) = 1 Then $iSet = $i ExitLoop EndIf Next If $iSet = 0 Then MsgBox(48, "Ошибка", "Выберите пожалуйста один из логинов") ContinueLoop EndIf If $iSet > UBound($Links_Array)-1 Or $iSet > UBound($Logins_Array)-1 Or $iSet > UBound($Pass_Array)-1 Then MsgBox(48, "Ошибка", "Извените, невозможно продолжить, видимо не были найдены данные линков/логинов/паролей") ContinueLoop EndIf WinActivate ("AvaRemoteLoad") ControlSetText ( 'AvaRemoteLoad', '', 'Edit1', $Links_Array[$iSet][1]) ControlSetText ( 'AvaRemoteLoad', '', 'Edit2', $Logins_Array[$iSet][1]) ControlSetText ( 'AvaRemoteLoad', '', 'Edit3', $Pass_Array[$iSet][1]) EndSwitch WEnd Цитата:
Цитата:
![]() ...И с тем что я написал ![]() |
||||
------- Отправлено: 02:48, 04-06-2007 | #471 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 254
|
Профиль | Отправить PM | Цитировать Creat0R
Ещё конкретнее. Беру autoit-winamp.au3 (7.43 KB) от Sanja Alone и winamp533_pro.exe (6.33 MB). Компилирую. Теперь autoit-winamp.exe имеет объём 205 КВ. Это правильно? Этот autoit-winamp.exe работает только тогда, когда рядом находится winamp533_pro.exe. |
Отправлено: 05:27, 04-06-2007 | #472 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать ChVL
Цитата:
Но я всё же не понимаю связи с этим: Цитата:
![]() Цитата:
|
|||
------- Отправлено: 06:01, 04-06-2007 | #473 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Creat0R
Цитата:
![]() |
|
Отправлено: 06:33, 04-06-2007 | #474 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать amel27
Цитата:
![]() Я вовсе не утверждал что нужно не доверять встроенным функциям, я им очень даже доверяю (но проверяю ![]() ![]() |
|
------- Отправлено: 06:43, 04-06-2007 | #475 |
Старожил Сообщения: 205
|
Профиль | Отправить PM | Цитировать ChVL
Цитата:
Цитата:
|
||
Отправлено: 06:44, 04-06-2007 | #476 |
Старожил Сообщения: 288
|
Профиль | Отправить PM | Цитировать Creat0R
Огромное Вам спасибо! Буду разбираться. |
Отправлено: 13:01, 04-06-2007 | #477 |
Старожил Сообщения: 254
|
Профиль | Отправить PM | Цитировать VelDmi
Спасибо! C помощью FileInstall поместил дистрибутив в скомпилированный скрипт (по размеру скрипта всё сходится). Как теперь сделать так, чтобы скрипт при запуске использовал именно этот exe, а не требовал его снаружи? Второй вопрос. Как сделать так, чтобы не мелькали окна приложения в процессе установки? |
Отправлено: 17:04, 04-06-2007 | #478 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать ChVL
Цитата:
$WinampPath = StringTrimRight(@ScriptFullPath, 4) & "_Setup.exe" FileInstall("winamp533_pro.exe", $WinampPath, 1) Run($WinampPath) Цитата:
|
||
------- Отправлено: 18:49, 04-06-2007 | #479 |
Старожил Сообщения: 254
|
Профиль | Отправить PM | Цитировать Creat0R
Спасибо! C FileInstall() разобрался, работает. Не сразу, правда, понял, что AutoIt принципиально не переваривает кириллицу в директории (безуспешно пытался использовать Рабочий стол). Со скрытым режимом не получается. Запуск ( Run($WinampPath, "", @SW_HIDE) ) на окна, выскакивающие в процессе установки, не влияет (не скрывает). Функция WinSetState оказалась несовместимой с WinWaitActive. Если WinSetState ставить перед WinWaitActive, то последняя не работает. Если после - нет смысла, т.к. окно уже промелькнуло. Эти варианты пробовал и раньше, а другие не нашёл. |
Отправлено: 21:07, 04-06-2007 | #480 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Открывая 7z архив пишет не удаётся открыть как архив. Можно ли его восстановить? | DreDo | Хочу все знать | 4 | 01-12-2009 18:54 | |
[Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:. | Vadikan | AutoIt | 1543 | 18-01-2009 10:46 | |
[архив - Часть 2] AutoIt скрипты | Vadikan | AutoIt | 985 | 21-01-2008 09:58 | |
[Архив - Часть 1.2] AutoIt скрипты | Dirk Diggler | AutoIt | 505 | 02-12-2006 11:00 | |
[Архив - Часть 1.1] AutoIt скрипты | EgOrus | AutoIt | 335 | 04-02-2006 16:58 |
|