|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [Архив - Часть 1.2] AutoIt скрипты |
|
[Архив - Часть 1.2] AutoIt скрипты
|
Ветеран Сообщения: 565 |
Внимание! Тема переведена в архивное состояние (настоятельно рекомендуется к прочтению/поиску) Руководство к действию по работе c AutoIt. |
|
------- Отправлено: 10:47, 10-02-2006 |
Старожил Сообщения: 342
|
Профиль | Сайт | Отправить PM | Цитировать Вот что получаеться, но при компиляции вываливаеться с ощибкой, подскажи пожалуйста что я напутал?
#include <GUIConstants.au3> ;Получаем переменные Opera AC $AC_OPERA = RegRead ("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment", "AC_OPERA") $AC_SOURCH = RegRead ("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment", "AC_SOURCH") While 1 $msg = GuiGetMsg() If $msg = $GUI_EVENT_CLOSE Or $msg = $Close Then ExitLoop ElseIf $msg = $Start Then GUISetState(@SW_HIDE) TrayTip("Идет копирование файлов","Дождитесь окончания копирования файлов",1,1) $FirstPath=GUICtrlRead($Input) $SecondPath=GUICtrlRead($Output) $Form1 = GUICreate("AForm1", 659, 352, 214, 146) $Pic1 = GUICtrlCreatePic("D:\Project\Soft\Opera$\Create\WizModernImage-IS.BMP", 8, 0, 153, 345) GUICtrlCreateLabel("Источник", 176, 8, 52, 17) $Input = GUICtrlCreateInput("AInput1", 176, 24, 425, 21, -1, $WS_EX_CLIENTEDGE) GUICtrlCreateLabel("Получатель", 176, 56, 63, 17) $Output = GUICtrlCreateInput("AInput2", 176, 72, 425, 21, -1, $WS_EX_CLIENTEDGE) $Bookmaarks = GUICtrlCreateCheckbox("ACheckbox1", 184, 112, 97, 17) $Notes = GUICtrlCreateCheckbox("ACheckbox2", 184, 136, 97, 17) $cookies = GUICtrlCreateCheckbox("ACheckbox3", 184, 160, 97, 17) $wand = GUICtrlCreateCheckbox("ACheckbox4", 184, 184, 97, 17) $vlink4 = GUICtrlCreateCheckbox("ACheckbox5", 184, 208, 97, 17) $global = GUICtrlCreateCheckbox("ACheckbox6", 184, 232, 97, 17) $download = GUICtrlCreateCheckbox("ACheckbox7", 184, 256, 97, 17) $cache = GUICtrlCreateCheckbox("ACheckbox8", 184, 280, 97, 17) $Start = GUICtrlCreateButton("AButton1", 328, 312, 113, 25) $Close = GUICtrlCreateButton("AButton2", 544, 312, 105, 25) GUICtrlCreateLabel("Закладки", 288, 112, 315, 17) GUICtrlCreateLabel("Заметки", 288, 136, 315, 17) GUICtrlCreateLabel("Куки", 288, 160, 315, 17) GUICtrlCreateLabel("Пароли жезла", 288, 184, 315, 17) GUICtrlCreateLabel("Набранные адреса", 288, 208, 315, 17) GUICtrlCreateLabel("История посещений", 288, 232, 315, 17) GUICtrlCreateLabel("История закачек", 288, 256, 315, 17) GUICtrlCreateLabel("Кеш", 288, 280, 313, 17) GUISetState(@SW_SHOW) If GUICtrlRead($Bookmaarks) = 1 Then DirCreate("$SecondPath") FileCopy("$FirstPath\profile\opera6.adr", "$SecondPath\profile\",1) EndIf If GUICtrlRead($Notes) = 1 Then DirCreate("$SecondPath") FileCopy("$FirstPath\profile\notes.adr", "$SecondPath\profile\",1) EndIf If GUICtrlRead($cookies) = 1 Then DirCreate("$SecondPath") FileCopy("$FirstPath\profile\cookies4.dat", "$SecondPath\profile\",1) EndIf If GUICtrlRead($wand) = 1 Then DirCreate("$SecondPath") FileCopy("$FirstPath\profile\wand.dat", "$SecondPath\profile\",1) EndIf If GUICtrlRead($global) = 1 Then DirCreate("$SecondPath") FileCopy("$FirstPath\profile\global.dat", "$SecondPath\profile\",1) EndIf If GUICtrlRead($download) = 1 Then DirCreate("$SecondPath") FileCopy("$FirstPath\profile\download.dat", "$SecondPath\profile\",1) EndIf If GUICtrlRead($cache) = 1 Then DirCreate("$SecondPath") DirCopy("$FirstPath\profile\cache4\", "$SecondPath\profile\cache4\",1) EndIf ExitLoop EndIf Wеnd |
------- Отправлено: 16:12, 25-06-2006 | #181 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Всем доброго времени суток!
У меня возникла следущая проблема: Я создал скрипт, который вызывает окно где можно выбрать каталог, и затем скрипт вписывает результат выбора в файл. Вот его состав: $var = FileSelectFolder("Вибирите каталог...", "") If @error Then Dim $iMsgBoxAnswer $iMsgBoxAnswer = MsgBox(292,"?","Вы уверенны") Select Case $iMsgBoxAnswer = 6;Yes Case $iMsgBoxAnswer = 7;No EndSelect Else $var = StringReplace($var, "|", @CRLF) MsgBox(4096,"","You chose " & $var) FileWrite ( "file.tmp", $var ) EndIf Как я могу сделать так, что если в том окне, которое появится после нажатия на 'Отмена' (в первом окне), пользователь нажимает в нём 'Нет', то будет запущено первое окно снова. Т.е нужно как-то вернуться на метку, которая будет стоять перед выводом первого окна. P.S: Я знаю что существует команда Wend и она как-то связанна с командой While = - Но как ей пользоваться, т.е как её подставлять в скрипт, я беспонятия ![]() |
------- Отправлено: 18:42, 06-07-2006 | #182 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Есть ещё вопрос:
Можно ли каким-то образом, конвертировать скрипт Bath (файла *.bat), в скрипт AutoIT? |
Отправлено: 19:30, 06-07-2006 | #183 |
Пользователь Сообщения: 125
|
Профиль | Отправить PM | Цитировать SyCraft
Цитата:
![]() В частности, неправильно пишешь имена переменных внутри строки: вместо "$FirstPath\profile\notes.adr", нужно писать $FirstPath&"\profile\notes.adr" или "$FirstPath$\profile\notes.adr" (в последнем случае нужно задать Opt("ExpandVarStrings",1)). Creat0R 1) Нужная тебе конструкция While... Wend подробно и с примерами описана в AutoIt Help. Лучше, чем там, тебе никто не объяснит. 2) Конверторов скриптов Bath в скрипт AutoIT нет и не будет. |
|
Отправлено: 21:33, 06-07-2006 | #184 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать bogomolv
Цитата:
С этого примера, и с описании которые в справке, мне трудно понять, каким образом в моём скрипте, будет возвращено управление на метку в начало скрипта?! я пробовал так, но не работает, пишет ошибка в команде wend: While $iMsgBoxAnswer = 7 $var = FileSelectFolder("Select a folder.", "") If @error Then Dim $iMsgBoxAnswer $iMsgBoxAnswer = MsgBox(292,"Msg","you sure?") Select Case $iMsgBoxAnswer = 6 ;Yes Case $iMsgBoxAnswer = 7 ;No EndSelect Wend Else $var = StringReplace($var, "|", @CRLF) MsgBox(64,".....","Вы выбрали: " & $var) FileWrite ( "c.tmp", $var ) EndIf Цитата:
![]() |
||
------- Отправлено: 00:09, 07-07-2006 | #185 |
Старожил Сообщения: 342
|
Профиль | Сайт | Отправить PM | Цитировать Ну вроде все исправил.. но тепрь такая проблема.. после нежатии кнопки начала копирования, копирование не происходит, просто выскакивает информационное окно о начале процеса все..
Не подскажите где я вновь учудил? #include <GUIConstants.au3> ;Получаем переменные Opera AC $AC_OPERA = RegRead ("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment", "AC_OPERA") $AC_SOURCH = RegRead ("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment", "AC_SOURCH") $Form1 = GUICreate("AForm1", 659, 352, 214, 146) $Pic1 = GUICtrlCreatePic("D:\Project\Soft\Opera$\Create\WizModernImage-IS.BMP", 8, 0, 153, 345) $Bookmaarks = GUICtrlCreateCheckbox("Закладки", 184, 112, 97, 17) $Notes = GUICtrlCreateCheckbox("Заметки", 184, 136, 97, 17) $cookies = GUICtrlCreateCheckbox("Куки", 184, 160, 97, 17) $wand = GUICtrlCreateCheckbox("Пароли жезла", 184, 184, 97, 17) $vlink4 = GUICtrlCreateCheckbox("Набранные адреса", 184, 208, 97, 17) $global = GUICtrlCreateCheckbox("История посещений", 184, 232, 97, 17) $download = GUICtrlCreateCheckbox("История закачек", 184, 256, 97, 17) $cache = GUICtrlCreateCheckbox("Кеш", 184, 280, 97, 17) GUISetState(@SW_SHOW) $Start = GUICtrlCreateButton("Go", 328, 312, 113, 25) $Close = GUICtrlCreateButton("Exit", 544, 312, 105, 25) GUICtrlCreateLabel("Источник", 176, 8, 52, 17) $Input = GUICtrlCreateInput($AC_SOURCH, 176, 24, 425, 21, -1, $WS_EX_CLIENTEDGE) GUICtrlCreateLabel("Получатель", 176, 56, 63, 17) $Output = GUICtrlCreateInput($AC_OPERA, 176, 72, 425, 21, -1, $WS_EX_CLIENTEDGE) $SecondPath=GUICtrlRead($Output) $FirstPath=GUICtrlRead($Input) While 1 $msg = GuiGetMsg() If $msg = $GUI_EVENT_CLOSE Or $msg = $Close Then Exit ElseIf $msg = $Start Then MsgBox("Идет копирование файлов","Дождитесь окончания копирования файлов", "Дождитесь окончания копирования файлов",1) EndIf Opt("ExpandVarStrings",1) If GUICtrlRead($Bookmaarks) = 1 Then FileCopy("$FirstPath$\profile\opera6.adr", "$SecondPath$\profile\*.*",1) EndIf If GUICtrlRead($Notes) = 1 Then FileCopy("$FirstPath$\profile\notes.adr", "$SecondPath$\profile\*.*",1) EndIf If GUICtrlRead($cookies) = 1 Then FileCopy("$FirstPath$\profile\cookies4.dat", "$SecondPath$\profile\*.*",1) EndIf If GUICtrlRead($wand) = 1 Then FileCopy("$FirstPath$\profile\wand.dat", "$SecondPath$\profile\*.*",1) EndIf If GUICtrlRead($global) = 1 Then FileCopy("$FirstPath$\profile\global.dat", "$SecondPath$\profile\*.*",1) EndIf If GUICtrlRead($download) = 1 Then FileCopy("$FirstPath$\profile\download.dat", "$SecondPath$\profile\*.*",1) If GUICtrlRead($cache) = 1 Then DirCopy("$FirstPath$\profile\cache4\", "$SecondPath$\profile\cache4",1) EndIf EndIf WEnd |
------- Отправлено: 00:50, 07-07-2006 | #186 |
Пользователь Сообщения: 125
|
Профиль | Отправить PM | Цитировать Creat0R
Ты не понимаешь суть базового понятия "цикл". + Несколько раз перечитал твое Цитата:
Поэтому могут лишь подправить твой скрипт: While 1 $var = FileSelectFolder("Select a folder.", "") If NOT @error Then $iMsgBoxAnswer = MsgBox(292,"Msg","you sure?") Select Case $iMsgBoxAnswer = 6 ;Yes $var = StringReplace($var, "|", @CRLF) MsgBox(64,".....","Вы выбрали: " & $var) FileWrite ( "c.tmp", $var ) Exit Case $iMsgBoxAnswer = 7 ;No Case Else Exit EndSelect Else Exit EndIf Wend Цитата:
1. У оператора MsgBox другой синтаксис MsgBox(0,"", "",1) 2. Считывать значения редактируемых переменных нужно в цикле While 1 $msg = GuiGetMsg() $SecondPath = GUICtrlRead($Output) $FirstPath = GUICtrlRead($Input) ... Сделай так: While 1 ... If $msg = $GUI_EVENT_CLOSE Or $msg = $Close Then Exit ElseIf $msg = $Start Then MsgBox(0,"Идет копирование файлов","Дождитесь окончания копирования файлов",1) If GUICtrlRead($Bookmaarks) = 1 Then ... EndIf ... EndIf WEnd Например, в твой скрипт я вставил вместо FileCopy("$FirstPath$\profile\opera6.adr", "$SecondPath$\profile\*.*",1) проверку MsgBox(0,"","$FirstPath$\profile\opera6.adr TO $FirstPath$\profile\*.*"). Тут же все твои косяки вылезли наружу. 5. Много мелких недочетов. В частности, зачем циклишь объявление опции Opt("ExpandVarStrings",1)? Обычно это делается в начале скрипта. |
||
Отправлено: 08:33, 07-07-2006 | #187 |
Старожил Сообщения: 342
|
Профиль | Сайт | Отправить PM | Цитировать bogomolv
Спасибо, ты уж не взыщи просто я далек от программирования и только учусь!!! Спасибо тебе! |
------- Отправлено: 09:39, 07-07-2006 | #188 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать bogomolv
Огромное тебе спасибо! Всё так как и нужно было! ![]() Я кажется понял суть работы команд Wend и While - Всё что находится между ними, будет выполняться до тех пор, пока значение одной из команд будет ровно 0 (или любое другое кроме 1 - если есть такого), но как я понял, это в случае если у команды While присутствует значение 1 (While = 1). А какие ещё есть возможности её использования? У меня есть пару вопросов: 1) Как осуществлять поиск существующего пути\каталога, и затем произвести определённое действие? Т.е, вот например команда $search = FileFindFirstFile("file.tmp"), произведёт поиск файла file.tmp. А если сделать так: $search = FileFindFirstFile("File.tmp") If $search = -1 Then MsgBox(0, "Error", "File was not found") Exit EndIf Но мне вообще-то нужно, чтобы был поиск не файла, а каталога\пути (или даже будет лучше, если значения $var). Примерно так я себе это представляю: $search = FileFindFirstFile("$var") If $search = -1 Then Тут нужно перейти в начало файла (думаю вместо этой строки поставить просто wend, а в строке выше, поменять -1 на 0, так?) |
------- Отправлено: 10:59, 07-07-2006 | #189 |
Ветеран Сообщения: 565
|
Профиль | Сайт | Отправить PM | Цитировать в хелпе все написано. Ох, батенька, взяли бы какую-нть книжку по информатике для 9 класса.
|
------- Отправлено: 11:52, 07-07-2006 | #190 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Открывая 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.3] AutoIt скрипты | biork | AutoIt | 503 | 09-06-2007 11:27 | |
[Архив - Часть 1.1] AutoIt скрипты | EgOrus | AutoIt | 335 | 04-02-2006 16:58 |
|