Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [Архив - Часть 1.3] AutoIt скрипты

Закрытая тема
Настройки темы
[Архив - Часть 1.3] AutoIt скрипты

Старожил


Сообщения: 250
Благодарности: 16

Профиль | Отправить PM | Цитировать


Изменения
Автор: Vadikan
Дата: 25-01-2008
Внимание!
Тема переведена в архивное состояние





(настоятельно рекомендуется к прочтению/поиску)


Руководство к действию по работе 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

 

Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Creat0R
Цитата:
Правда теперь можно использовать только $flags=1, иначе оно не работает
хм... действительно, по ходу этот флаг работает только со старым стилем окна

ADD: на форуме сабжа нашел DLL-ку, позволяющую реализовать CallBack-функциив AutoIT... Если устроит такой вариант можно попробовать для случая стартового каталога в самопальном _FileSelectFolder().

sattva
Смотри в справке функцию FileCreateShortcut(), 6-й и 8-й параметры задают файл и номер иконки в файле.

twincode
если имя шары не меняется, то можно и так:
Код: Выделить весь код
$ABC = "cdefghijklmnopqrstuvwxyz"
$oldServer = "server1"
$newServer = "server2"

For $i=1 To StringLen ($ABC)
    $drive = StringMid ($ABC, $i, 1) & ':'
    $share = DriveMapGet ($drive)
    If $share <> "" Then
        $border = StringInStr ($share, '\' ,0 ,3)
        $server = StringMid ($share, 3, $border-3)
        $folder = StringMid ($share, $border)
        If $server = $oldServer Then
            DriveMapDel ($drive)
            DriveMapAdd ($drive, '\\' & $newServer & $folder)
        EndIf
    EndIf
Next

Последний раз редактировалось amel27, 18-04-2007 в 02:16.


Отправлено: 04:46, 17-04-2007 | #311



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


amel27
Цитата:
Если устроит такой вариант можно попробовать для случая стартового каталога в самопальном _FileSelectFolder()
Устроит, почему бы и нет , я хотя и не очень разбираюсь в Dll'ках, но мне кажется их использование довольно надёжно (или ошибаюсь?).

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 02:41, 18-04-2007 | #312


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Creat0R
Ну... при использовании штатных библиотек (поставляемых с операционной системой) придется сначала внимательно прочитать MSDN, так как варианты вызова обычно зависят от множества факторов типа версии Windows и пр. Если все требования соблюдены, то теоретически проблем не должно быть. Касаемо самопальных библиотек (типа той с форума) - тут все на совести их разработчика .

Отправлено: 05:27, 18-04-2007 | #313


Новый участник


Сообщения: 2
Благодарности: 0

Профиль | Отправить PM | Цитировать


я новичек в autoit
пытаюсь написать скрипт установки программы. дошел до окна, где нужно выбрать несколько чекбоксов и нажать "далее". Если все это делать с функциеей Send, и выставить побольше AutoItSetOption("SendKeyDelay", 150), товсе идет, а вот с функциеей ControlClick нет.
Флажки не ставятся, а сразу "Далее" (это если Send("!Д")) если Send("{ENTER}") или той же ControlClick просто стоит. До нажатия "далее" все работает. Я думал, что скрип выполняеться построчно ....Помогите разобраться

Отправлено: 13:27, 18-04-2007 | #314


Аватара для magnetikus

Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Отправить PM | Цитировать


Флажки можно поставить пробелом. Перескакивать между элементами - ТАВ
Кстати кто нибудь знает как при компиляции в скрипт загнать свои собственные файлы и папки - пишу собственный инсталлятор

Отправлено: 19:17, 18-04-2007 | #315


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


magnetikus
Цитата:
как при компиляции в скрипт загнать свои собственные файлы
См. в справке FileInstall() - на счёт папок не получится, нужно будет устанавливать файлы, и в процессе создавать папки (если в результате нужно чтобы файлы помещались в определённую папку).

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 20:25, 18-04-2007 | #316


Новый участник


Сообщения: 2
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата:
Флажки можно поставить пробелом. Перескакивать между элементами - ТАВ
Я так и делал
Send("{DOWN}")
Send("{DOWN}")
Send("{SPACE}")
Send("{DOWN}")
Send("{DOWN}")
Send("{ENTER}")
Send("{DOWN}")
Send("{DOWN}")
Send("{DOWN}")
Send("{DOWN}")
Send("{SPACE}")
Send("{DOWN}")
Send("{DOWN}")
Send("{ENTER}")
Send("{ENTER}")
Меня интересуе, почему при использовании ControlClick начинает исполняться Send("{ENTER}"), а предшевствующие ей ControlClick прорускаються?!

Отправлено: 15:35, 19-04-2007 | #317


Ветеран


Сообщения: 565
Благодарности: 41

Профиль | Сайт | Отправить PM | Цитировать


Как с пом. Autoit узнать список установленных обновлений ОС[и их версий] ?

Отправлено: 17:48, 23-04-2007 | #318


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Dirk Diggler
например, из реестра... не понял насчет версий, как вариант - найти соотв. CAT-файл и восстановить его дату
Код: Выделить весь код
#include <Array.au3>

$file = "C:\HotFixes.txt"
$aList = _GetHotFixes ()

$f = FileOpen ($file, 2)
For $i=1 To $aList[0][0]
    FileWrite ($file, $aList[$i][0] & @CRLF & $aList[$i][1] & @CRLF & $aList[$i][2] & @CRLF & @CRLF)
Next
FileClose ($f)

Func _GetHotFixes ()
    Local $i, $j, $k, $iKey, $jKey, $kKey
    Local Const $root1 = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\HotFix"
    Local Const $root2 = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Updates"
    Local $arrList[1] = [0], $arrHFix[1][3] = [[0,0,0]]
    $i=1
    While True
        $iKey = RegEnumKey ($root1, $i)
        If @error Then  ExitLoop
        $arrList[0]+=1
        ReDim $arrList[$arrList[0]+1]
        $arrList[$arrList[0]] = $iKey
        $i+=1
    Wend
    $i=1
    While True
        $iKey = RegEnumKey ($root2, $i)
        If @error Then  ExitLoop
        $j=1
        While True
            $jKey = RegEnumKey ($root2 & '\' & $iKey, $j)
            If @error Then  ExitLoop
            If _ArraySearch ($arrList, $jKey, 1) > 0 Then
                $arrHFix[0][0] +=1
                ReDim $arrHFix[$arrHFix[0][0]+1][3]
                $arrHFix[$arrHFix[0][0]][0]=$jKey
                $arrHFix[$arrHFix[0][0]][1]=$iKey
                $arrHFix[$arrHFix[0][0]][2]=RegRead ($root2 & '\' & $iKey & '\' & $jKey, 'Description')
                If @error Then $arrHFix[$arrHFix[0][0]][2]=RegRead ($root2 & '\' & $iKey & '\' & $jKey, 'PackageName')
            ElseIf StringRegExp ($jKey, '^SP[1-9]$') Then
                $k=1
                While True
                    $kKey = RegEnumKey ($root2 & '\' & $iKey & '\' & $jKey, $k)
                    If @error Then  ExitLoop
                    If _ArraySearch ($arrList, $kKey, 1) > 0 Then
                        $arrHFix[0][0] +=1
                        ReDim $arrHFix[$arrHFix[0][0]+1][3]
                        $arrHFix[$arrHFix[0][0]][0]=$kKey
                        $arrHFix[$arrHFix[0][0]][1]=$iKey
                        $arrHFix[$arrHFix[0][0]][2]=RegRead ($root2 & '\' & $iKey & '\' & $jKey & '\' & $kKey, 'Description')
                        If @error Then $arrHFix[$arrHFix[0][0]][2]=RegRead ($root2 & '\' & $iKey & '\' & $jKey, 'PackageName')
                    EndIf
                    $k+=1
                Wend
            EndIf
            $j+=1
        Wend
        $i+=1
    Wend
    Return $arrHFix
EndFunc

Последний раз редактировалось amel27, 28-04-2007 в 11:32.


Отправлено: 09:44, 24-04-2007 | #319


Новый участник


Сообщения: 38
Благодарности: 2

Профиль | Отправить PM | Цитировать


Сделал недавно скрипт, в котором на одной из стадий заменяются три файла (именно в таком порядке):

c:\windows\system32\dllcache\Notepad.exe
c:\windows\system32\Notepad.exe
c:\windows\Notepad.exe

У меня на компе при этом выскакивает сообщение о том, что системные файлы были изменины. Ну я засунул в конец скрипта следующий код:

WinWaitActive ( "Защита файлов Windows", "Файлы, нужные для правильной работы Windows" )
ControlClick ( "Защита файлов Windows", "Файлы, нужные для правильной работы Windows", 2 )
WinWaitActive ( "Защита файлов Windows", "Вы отказались от восстановления исходных версий файлов." )
ControlClick ( "Защита файлов Windows", "Вы отказались от восстановления исходных версий файлов.", 6 )

На моём компе всё ставится отлично. А на компе одного из знакомых сообщение не выскакивает. Только происходит замена моего файла на стандартный. Не знаю, что и делать. Единственное отличие между компами: на моём нет никаких заплаток, тогда как у знакомо есть выделенка и стоит куча обновлений.

Отправлено: 19:53, 25-04-2007 | #320



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [Архив - Часть 1.3] AutoIt скрипты

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Открывая 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




 
Переход