Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   Установка большого количества .exe (http://forum.oszone.net/showthread.php?t=227979)

LEXYS 16-02-2012 12:03 1860017

Установка большого количества .exe
 
Добрый день. В теме не нашел.
Вопрос такой:

Есть большое количество .exe файлов. Все в одной папке.

Установка их простая - 3 раза по мере необходимости нажать Enter.

Как сделать автоустановку всех файлов из папки?

Заранее спасибо.

Kzer-Za 23-02-2012 09:44 1864880

Странно, что никто из спецов до сих пор не отписался... Ладно, попробую я, в меру своих скромных возможностей - возможно решение получилось корявым.

Код:

Opt('TrayIconDebug', 1)

#include <File.au3>
#include <Process.au3>

Dim $aExeList = _FileListToArray(@ScriptDir, '*.exe', 1) ;если файл скрипта будет лежать НЕ в той же папке, где лежат экзешники, то меняем @ScriptDir на путь к папке с оными
Dim $aWinlist = WinList ()

;FileChangeDir('')
; опять же, если файл скрипта лежит отдельно, то раскомментируем строку выше и прописываем в кавычках путь к папке, в которой лежат экзешники

For $iFile = 1 To $aExeList[0] ; по очереди запускаем экзешники из этой папки
        Run($aExeList[$iFile])
        Sleep(500) ; время, необходимое для того, чтобы успело появиться окно устанавливаемой программы (может, его понадобится увеличить)
        For $iList = 1 To $aWinlist[0][0] ; делаем список всех открытых окон в системе
                If _ProcessGetName (WinGetProcess ($aWinlist[$iList][0])) = $aExeList[$iFile] Then ; двигаемся по нему, пока не найдем окно, вызванное нашим экзешником
                        WinSetTitle($aWinlist[$iList][0], '', 'Установка программы ' & $iFile); меняем имя этого окна на "Установка программы номер такой-то"
                        ; Дальше - поскольку мы запускаем по очереди несколько программ и поэтому не имеем возможности задать WinWaitActive с определенным текстом, чтобы послать в это окно Enter, то мы тупо будем посылать Enter в наше окно с интервалом в 0,3 секунды до тех пор, пока это окно существует
                        While WinExists('Установка программы ' & $iFile)
                                ControlSend('Установка программы ' & $iFile, '', '', '{Enter}')
                                Sleep(300)
                        WEnd
                EndIf
        Next
Next



Время: 01:53.

Время: 01:53.
© OSzone.net 2001-