Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » AutoIT (Часть 3)

Модерирует : gyra, Maz

gyra (23-01-2020 10:51): AutoIT (Часть 4)  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200

   

Widok



Moderator-Следопыт
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

 
Описание:

Цитата:
AutoIt v3 - это язык для написания сценариев, напоминающий BASIC. Основным его назначением является автоматизация работ с Windows GUI (графическим интерфейсом пользователя MS Windows). Для выполнения этой сложной задачи предоставляется комбинация испытанных методов, включающих в себя эмуляцию нажатий комбинаций клавиш клавиатуры, перемещения указателя мыши, управление окнами и их визуальными элементами. Как показывает практика, эти "приводные ремни" весьма эффективны для получения работающих решений в ситуациях, когда другие стандартные средства (например, VBScript и SendKeys) оказываются бессильны.
Умеет он очень и очень многое! Бесплатный.

 
  • Справки
  • Инструменты
  • Ресурсы, посвящённые AutoIt
  • Полезные советы новичкам и не только
  • Готовые решения
  • Скрипт раскраски кода AutoIt для публикации в форумах
     


     
    За шапкой следит ViSiToR / AZJIO  

  • Всего записей: 24190 | Зарегистр. 07-04-2002 | Отправлено: 13:07 01-06-2010 | Исправлено: Maz, 12:29 10-01-2020
    Zloy_Gelud



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    berkut9737 -- может попробовать компилировать x64 версию?

    Всего записей: 3266 | Зарегистр. 30-05-2007 | Отправлено: 14:02 20-05-2013
    berkut9737



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Zloy_Gelud

    Цитата:
    может попробовать компилировать x64 версию?

    Вариант, спасибо.
     
    Мне бы хотелось для моего кода прописать условие типа: если замена файла произошла успешно, то вывести "Готово!", если нет, то "Ошибка!". Я набросал такую схему, но она не работает. Что я делаю не так?
     

    Код:
    $var=FileCopy ( @DesktopDir & "\009\test.exe", @ProgramFilesDir &"\008", 1 )
    If $var1==True Then
      MsgBox ( 0, "title", "Готово!" )  
       Else
       MsgBox ( 0,"title", "Ошибка!" )  
    EndIf

    Всего записей: 1140 | Зарегистр. 05-04-2009 | Отправлено: 14:22 20-05-2013 | Исправлено: berkut9737, 14:33 20-05-2013
    Zloy_Gelud



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    berkut9737 -- думаю в этом.

    Цитата:
    $var=FileCopy ( @DesktopDir & "\009\test.exe", @ProgramFilesDir &"\008", 1 )
    If $var1==True Then
      MsgBox ( 0, "title", "Готово!" )  
       Else
       MsgBox ( 0,"title", "Ошибка!" )  
    EndIf  

    Всего записей: 3266 | Зарегистр. 30-05-2007 | Отправлено: 14:27 20-05-2013
    berkut9737



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Zloy_Gelud
    Я исправил ошибку с именами переменных, но при успешном выполнении скрипта появляется только второе сообщение "Ошибка"

    Всего записей: 1140 | Зарегистр. 05-04-2009 | Отправлено: 14:32 20-05-2013
    Zloy_Gelud



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    berkut9737 -- замени двойное_равно на одинарное. Т.к. двойное_равно, вроде как, проверяет и типы переменных.

    Всего записей: 3266 | Зарегистр. 30-05-2007 | Отправлено: 14:35 20-05-2013
    berkut9737



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Zloy_Gelud

    Цитата:
    замени двойное_равно на одинарное. Т.к. двойное_равно, вроде как, проверяет и типы переменных.

    True!

    Всего записей: 1140 | Зарегистр. 05-04-2009 | Отправлено: 14:38 20-05-2013
    Skif_off

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    comrades, появилось желание сделать что-то вроде такого, чтобы при нажатии OK (вместо Применить изменения) команды запуска внешних программ с параметрами из отмеченных пунктов записывалися в cmd-файл в %temp%, который после этого запускается. Не попадалось ли чего-то похожего?
    Пробовал сам, но с отсутствием знаний сложно , хотелось бы что-то похожее посмотреть.

    Всего записей: 6489 | Зарегистр. 28-01-2008 | Отправлено: 15:30 20-05-2013
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    berkut9737

    Цитата:
    Здравствуйте, есть такая команда в Autoit?  
     Цитата:Установить директорию из которой запущен скрипт, как текущую.

    да есть FileChangeDir
     
    Skif_off

    Код:
    GUICreate('My Program', 250, 260)
    $iCheckbox1 = GUICtrlCreateCheckbox("Чекбокс 1", 10, 10, 120, 20)
    $iCheckbox2 = GUICtrlCreateCheckbox("Чекбокс 2", 10, 30, 120, 20)
    $iButton = GUICtrlCreateButton('Применить', 10, 70, 120, 22)
    GUISetState()
    While 1
        Switch GUIGetMsg()
            Case $iButton
                If GUICtrlRead($iCheckbox1) = 1 Then
                    MsgBox(0, 'Сообщение', 'Типа что-то делаем 1')
                EndIf
                If
    GUICtrlRead($iCheckbox2) = 1 Then
                    MsgBox(0, 'Сообщение', 'Типа что-то делаем 2')
                EndIf
            Case
    -3
                Exit
        EndSwitch
    WEnd

    Всего записей: 4413 | Зарегистр. 03-05-2006 | Отправлено: 16:02 20-05-2013 | Исправлено: AZJIO, 16:10 20-05-2013
    Zloy_Gelud



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Skif_off

    Код:
    #include <File.au3>
    Local $sCMDPath = _TempFile(Default, Default, '.bat')
    Local $hCMDFile = FileOpen($sCMDPath, 1)
    If ($hCMDFile = -1) Then
        MsgBox(4096, "Error", "Unable to open file.")
        Exit
    EndIf
     
    FileWriteLine($hCMDFile, "tree 'C:\WINDOWS\Help' > C:\tree.txt")
    FileWriteLine($hCMDFile, "help > C:\help.txt")
    FileWriteLine($hCMDFile, "cd > C:\cd.txt")
    FileClose($hCMDFile)
     
    RunWait($sCMDPath, @TempDir, @SW_HIDE)
    FileDelete($sCMDPath)


    Всего записей: 3266 | Зарегистр. 30-05-2007 | Отправлено: 16:19 20-05-2013
    berkut9737



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AZJIO
    Как удалить папку со всем содержимым отработавшего скрипта?
    Мой код не работает...
     

    Код:
    DirRemove (@ScriptDir, 1 )

    Всего записей: 1140 | Зарегистр. 05-04-2009 | Отправлено: 19:30 20-05-2013
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    berkut9737
    Цитата:
    Как удалить папку со всем содержимым отработавшего скрипта?
    А что еще есть в этой папке? И где она лежит?

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 19:52 20-05-2013 | Исправлено: madmasles, 19:58 20-05-2013
    berkut9737



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    madmasles

    Цитата:
    А что еще есть в этой папке? И где она лежит?  

    Ничего особенного- три файла и сам скрипт. Папка к системе не имеет никакого отношения. Просто, я хотел, чтобы после отработки скрипта он (скрипт) самоудалился вместе с папкой и содержащимися в ней файлами. Это возможно?
    З.Ы. Папка лежит на рабочем столе.

    Всего записей: 1140 | Зарегистр. 05-04-2009 | Отправлено: 20:09 20-05-2013 | Исправлено: berkut9737, 20:20 20-05-2013
    Skif_off

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AZJIO, Zloy_Gelud, спасибо, получилось вот так

    Код:
    #include <File.au3>
     
    Local $sCMDPath = _TempFile(Default, Default, '.bat')
    Local $hCMDFile = FileOpen($sCMDPath, 1)
    If ($hCMDFile = -1) Then
         MsgBox(4096, "Error", "Unable to open file.")
         Exit
    EndIf
     
    GUICreate('My Program', 250, 260)
    $iCheckbox1 = GUICtrlCreateCheckbox("Чекбокс 1", 10, 10, 120, 20)
    $iCheckbox2 = GUICtrlCreateCheckbox("Чекбокс 2", 10, 30, 120, 20)
    $iButton = GUICtrlCreateButton('Применить', 10, 70, 120, 22)
    GUISetState()
    While 1
         Switch GUIGetMsg()
            Case $iButton
               If GUICtrlRead($iCheckbox1) = 1 Then
                  FileWriteLine($hCMDFile, "start """" C:\WINDOWS\NOTEPAD.EXE")
               EndIf
               If GUICtrlRead($iCheckbox2) = 1 Then
                  FileWriteLine($hCMDFile, "отмечен чекбокс 2")
               EndIf
               FileClose($hCMDFile)
               RunWait($sCMDPath, @TempDir, @SW_HIDE)
               FileDelete($sCMDPath)
               Exit
            Case -3
               Exit
         EndSwitch
    WEnd

    Отрабатывает без ошибок, все корректно?
     
    Добавлено:
    после

    Код:
    Case -3

    добавил

    Код:
    FileClose($hCMDFile)
    FileDelete($sCMDPath)

    чтобы при закрытии окна крестиком удалялся временный bat-файл.

    Всего записей: 6489 | Зарегистр. 28-01-2008 | Отправлено: 20:56 20-05-2013 | Исправлено: Skif_off, 17:01 21-05-2013
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    berkut9737
    Цитата:
    Просто, я хотел, чтобы после отработки скрипта он (скрипт) самоудалился вместе с папкой и содержащимися в ней файлами. Это возможно?
    Попробуйте так.
    Код:
    If MsgBox(36, '?', 'Удалить папку?' & @LF & @ScriptDir) = 6 Then
        _ScriptDirDestroy()
    EndIf
     
    Func _ScriptDirDestroy()
        Local $sPath, $hFile, $sTemp = @TempDir & '\~' & Random() & '.bat'
        $sPath = FileGetShortName(@ScriptFullPath)
        $hFile = FileOpen($sTemp, 2)
        FileWrite($hFile, ':loop' & @CRLF & 'del ' & $sPath & @CRLF & 'if exist ' & $sPath & ' goto loop' & @CRLF & 'rd /q /s ' & _
                FileGetShortName(@ScriptDir) & @CRLF & 'del ' & $sTemp)
        FileClose($hFile)
        Run($sTemp, @TempDir, @SW_HIDE)
    EndFunc   ;==>_ScriptDirDestroy

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 21:23 20-05-2013 | Исправлено: madmasles, 21:45 20-05-2013
    berkut9737



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    madmasles

    Цитата:
    Попробуйте так.

    Спасибо, буду разбираться.

    Всего записей: 1140 | Зарегистр. 05-04-2009 | Отправлено: 22:02 20-05-2013
    Daniyar91

    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите, почему скрипт не выкачивает файлы на FTP? я вроде-бы все правильно сделал.
     
    В папке со скриптом находятся несколько каталогов (а также 7z.exe и 7z.dll, для того чтобы создавать архивы), по идее скрипт должен:
    1) создать список папок которые потом надо упаковать с помощью 7z.exe;
    2) выкачать созданные архивы на FTP.
    Так вот - первое выполняется, но файлы почему-то не выкачиваются.

    Код

    Всего записей: 425 | Зарегистр. 30-08-2011 | Отправлено: 06:22 21-05-2013 | Исправлено: Daniyar91, 18:47 22-05-2013
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Daniyar91
    Цитата:
    но файлы почему-то не выкачиваются.
    Попробуйте поменять на
    Код:
    $Conn = _FTP_Connect($Open, $server, $username, $pass, 1)


    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 11:06 22-05-2013
    Daniyar91

    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Спасибо, это оказались проблемы с сервером а не AutoIT, сейчас все выкачивается.

    Всего записей: 425 | Зарегистр. 30-08-2011 | Отправлено: 18:43 22-05-2013
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Хочу в функцию поиска файлов добавить исключение каталогов из обработки.  
    _FO_FileSearch ( $sPath [, $sMask = '*' [, $fInclude=True [, $iDepth=125 [, $iFull=1 [, $iArray=1 [, $iTypeMask=1 [, $sLocale=0]]]]]]] )
    Вот пример можно уже попробовать FileOperations.7z. Добавлен параметр $vExcludeFolders. Добавил перед $sLocale, не слишком ли далеко? В общем хорошо тем что конфликтов вероятно не будет, потому что $sLocale появился недавно и скорее всего не используется. Во вторых как вариант этот параметр добавить к $sPath например:
    "C:\^Program Files|WINDOWS", то есть искать в C:\ исключая каталоги Program Files и иWINDOWS. Но этот вариант потребует парсинга параметра $sPath при каждом вызове, то есть проверять наличие ^ - символа исключения. Вомжно ещё вариант "C:\<Program Files|WINDOWS>", тогда для начала достаточно проверить только правый символ, и при наличии искать левый.
    Какие идеи?

    Всего записей: 4413 | Зарегистр. 03-05-2006 | Отправлено: 15:34 28-05-2013
    Artem_Butenko



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ребята, прошу прощения за назойливость. Сам так и не смог разобраться с прошлым вопросом. Может быть меня просто немножко не так поняли. Суть вопроса состояла в автоматизации получения "FileInstall" и "DirCreate" для первого.
     
    Спасибо AZJIO за библиотеку FileOperations.au3. По примерам составил скрипт.
    Структура файла "Config.ini":
    [FolderSearch]
    FolderPath='\Resources'
     
    Скрипт отрабатывает замечательно. Считывается и записывается в текстовый файл структура дерева каталогов и относительные пути к файлам.
     
    Например, содержание файла "FoldersList.txt":
    Data
    Doc
    Doc\en
    Doc\guide
    Doc\guide\en
    Doc\guide\en\images
     
    Содержание файла "FilesList.txt":
    Doc\ChangeLog.txt
    Doc\COPYING.txt
     
    Вопрос в том, как подключить все полученные строки из файла "FoldersList.txt" в функцию "DirCreate", чтобы "FoldersList.txt", собирался следующего вида:

    Код:
    DirCreate(@TempDir & '\Data')
    DirCreate(@TempDir & '\Doc')
    DirCreate(@TempDir & '\Doc\en')
    DirCreate(@TempDir & '\Doc\guide')
    DirCreate(@TempDir & '\Doc\guide\en')
    DirCreate(@TempDir & '\Doc\guide\en\images')

     
    С "FilesList.txt" сложнее, не знаю возможно ли это, чтобы результат поиска файлов записывался для использования в "FileInstall", например:

    Код:
    FileInstall('.\Resources\Doc\ChangeLog.txt', @TempDir & '\Doc\ChangeLog.txt', 1)
    FileInstall('.\Resources\Doc\COPYING.txt', @TempDir & '\Doc\COPYING.txt', 1)

     
    Буду очень благодарен и признателен Вашей помощи.

    Всего записей: 711 | Зарегистр. 19-02-2008 | Отправлено: 21:17 28-05-2013 | Исправлено: Artem_Butenko, 21:26 28-05-2013
       

    Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200

    Компьютерный форум Ru.Board » Компьютеры » Программы » AutoIT (Часть 3)
    gyra (23-01-2020 10:51): AutoIT (Часть 4)


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru