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

Показать сообщение отдельно

Googler


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

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


Цитата cra5h_:
коллекция скриптов с рекурсивным поиском пополняется »
тогда до кучи, вариант через WMI:

Код: Выделить весь код
#include <array.au3>

$a = _FileFindLike("spuninst.exe", "C:\\WINDOWS\\$")
_ArrayDisplay($a)

Func _FileFindLike($strRight, $strLeft = @HomeDrive, $sComputer = ".")
    Local $arrRight= StringRegExp($strRight, "^(.*?(?:\.([^.\\]*))?)$", 3)
    If Not(IsArray($arrRight)) Then Return SetError(1, 1)

    Local $arrLeft = StringRegExp($strLeft , "^([A-Za-z]:)(.*)", 3)
    If Not(IsArray($arrLeft)) Then Return SetError(1, 2)

    Local $strDrive = $arrLeft[0], $strPath = $arrLeft[1]
    Local $strName = $arrRight[0], $strExtn = ""
    If UBound($arrRight)=2 Then $strExtn = $arrRight[1]

    Local $objWMI = ObjGet("winmgmts:\\" & $sComputer & "\root\cimv2")
    If Not(IsObj($objWMI)) Then Return SetError(2, 1, "")

    Local $strQuery = 'SELECT * FROM CIM_DataFile WHERE Drive="'& $strDrive & _
        '" AND Extension="'& $strExtn &'" AND Path LIKE "'& $strPath & _
        '%" AND Name LIKE "%'& $strName &'"'
    Local $arrRes[1] = [0], $colItems = $objWMI.ExecQuery($strQuery)
    If Not(IsObj($colItems)) Then Return SetError(2, 2, "")

    For $objItem In $colItems
        $arrRes[0]+=1
        ReDim $arrRes[$arrRes[0]+1]
        $arrRes[$arrRes[0]]=$objItem.Path
    Next

    Return $arrRes
EndFunc
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:15, 21-01-2010 | #9