Продолжим разговор об интересных функциях?
Очень понравилась функция StringSplit. Особенно одно ее практическое применение, которое подсмотрел в предлагаемом для include файле File.au3. Теперь одной строчкой считываю содержимое текстового файла в массив
$list=StringSplit(FileRead($f,FileGetSize($f)),@CRLF) и делаю с ним, что хочу!
В частности, функция очень пригодилась для считывания структуры каталогов драйверов OEM-установки Windows (папка $oem$\$1\drivers). Раньше приходилось следить и жестко прописывать все пути к драйверам для их автоустановки на стадии CMDLINES (CMDLINES.TXT у меня запускает CMDLINES.AU3, в котором расписан сценарий установки дров и инициализации настроек системы).
Теперь в CMDLINES.AU3 вместо многостраничного перечня действий со всеми своими и чужими драйверами (с которыми когда-либо встречался и могу встретиться еще) у меня стоит красивая конструкция:
Код:
![Выделить весь код](images/misc/selectcode.png)
;Установка драйверов устройств
$f= '%temp%\1.txt'
RunWait ('%Comspec% /c dir /ad /s "c:\drivers" | find "c:\drivers\" > $f$','',0)
$dr= StringSplit(StringReplace(FileRead($f,FileGetSize($f)),' ‘®¤Ґа¦Ё¬®Ґ Ї ЇЄЁ ',''),@CRLF)
For $i=1 To $dr[0]
$drr= $dr[$i]
$srch= FileFindFirstFile('$drr$\*_1.au3')
If $srch=0 Then RunWait('AutoIt3.exe "$drr$\'&FileFindNextFile($srch)&'"')
FileClose($srch)
Next
Данной процедурой считывается дерево каталога "c:\drivers" (куда копируются в процессе установки драйвера из $oem$\$1\drivers) и проверяется наличие скриптов с именем *_1.au3 с последующим их запуском. Файлы скриптов *_1.au3 - это мои автоустановщики дров и их настроек, которые я теперь храню вместе с дровами (а не в CMDLINES.AU3, как раньше). Не все дрова требуют наличия таких установщиков. И прекрасно! FileFindNextFile() не найдет *_1.au3 и перейдет к следующему каталогу. Есть и такие дрова, которые вообще не любят ставиться в процессе установки Windows (например, IAAraid). Обзываем скрипт их установки *_2.au3 и включаем те же девять строк в начало STARTUP.AU3, который стартует из Автозапуска при первом запуске свежеустановленной Windows (в этом файле у меня расписан сценарий автустановки программного обеспечения).
Теперь подготовка дистрибутива для установки системы на чужой машине сводится к простому копированию из архива заготовок драйверов для $oem$\$1\drivers и небольшой правке unattended.txt. Счастливому же владельцу машины достается комплект автопереустановки системы, похожий на те, что идут с ноутбуками…