Lubitel Softa
02-10-2010, 01:03
Здравствуйте. Друзья, помогите решить проблему с поиском файлов по нескольким маскам.
Суть проблемы: написал я скрипт (сильно не ругайте т.к. я новичок в мире AutoIT), который устанавливает обновления в формате msu для Вындавс 7. И всё бы ничего, да только захотелось мне сделать его "универсальным" т.е. добавить возможность установки обновлений из *.cab архивов. И тут возник вопрос, а как сделать поиск по двум маскам :shocked:
FileFindFirstFile может искать только по одной, так по крайней мере написано в справке.... и тут работа стала.
Как я себе представлял установку обновлений в виде *.cab:
While $search_msu = 1
$msu = FileFindNextFile ($search_msu)
If @error Then ExitLoop
$iPrecent += 5
$counter += 1
ProgressSet ($iPrecent, $counter & "/" & $iFiles & " - " & $msu)
Select
Case $msu = "*.cab"
RunWait (@SystemDir & "\PkgMgr.exe /ip /m:" & $msu & " /quiet /norestart")
Case $msu = "*.msu"
RunWait (@SystemDir & "\wusa.exe " & $msu & " /quiet /norestart")
EndSelect
If $iPrecent = 100 Then
$iPrecent = 0
EndIf
WEnd
Но такой вариант не прокатил потому что, как оказалось, $msu возвращает полное имя файла (Windows6.1-KB969168-x86.msu) и по расширению никак не получится сделать If - Then - Else.
Суть проблемы: написал я скрипт (сильно не ругайте т.к. я новичок в мире AutoIT), который устанавливает обновления в формате msu для Вындавс 7. И всё бы ничего, да только захотелось мне сделать его "универсальным" т.е. добавить возможность установки обновлений из *.cab архивов. И тут возник вопрос, а как сделать поиск по двум маскам :shocked:
FileFindFirstFile может искать только по одной, так по крайней мере написано в справке.... и тут работа стала.
Как я себе представлял установку обновлений в виде *.cab:
While $search_msu = 1
$msu = FileFindNextFile ($search_msu)
If @error Then ExitLoop
$iPrecent += 5
$counter += 1
ProgressSet ($iPrecent, $counter & "/" & $iFiles & " - " & $msu)
Select
Case $msu = "*.cab"
RunWait (@SystemDir & "\PkgMgr.exe /ip /m:" & $msu & " /quiet /norestart")
Case $msu = "*.msu"
RunWait (@SystemDir & "\wusa.exe " & $msu & " /quiet /norestart")
EndSelect
If $iPrecent = 100 Then
$iPrecent = 0
EndIf
WEnd
Но такой вариант не прокатил потому что, как оказалось, $msu возвращает полное имя файла (Windows6.1-KB969168-x86.msu) и по расширению никак не получится сделать If - Then - Else.