Что нового

Поиск папки не зная его местонахождение.

scanfail

Знающий
Сообщения
244
Репутация
17
Здравствуйте! Как найти папку, не зная на каком жестком диске она находиться, а? :scratch:
 

Dm666

Осваивающий
Сообщения
221
Репутация
48
Искать по всем дискам?
Список дисков получить по
Код:
DriveGetDrive("FIXED")
 
Автор
S

scanfail

Знающий
Сообщения
244
Репутация
17
Спасибо! А папку то саму как найти? :stars:
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
Код:
$aArray = DriveGetDrive("fixed")
For $1i = 1 To UBound($aArray) - 1
    $aReturn = _FileSearch($aArray[$1i], "название папки", 2, 1)
    For $i = 1 To UBound($aReturn) - 1
        MsgBox(0, '', $aReturn[$i])
    Next
    Next


; #FUNCTION# ====================================================================================================
; Author.........:  G.Sandler (MrCreatoR).
; ===============================================================================================================
Func _FileSearch($sPath, $sFileMask = "*", $iFlag = 0, $iSubDir = 1, $iSort = 0)
    Local $sOutBin, $sOut, $aOut, $sRead, $hDir, $sAttrib, $sFiles
    If Not StringInStr(FileGetAttrib($sPath), "D") Then
        Return SetError(1, 0, 0)
    EndIf
    If $iSubDir = 1 Then
        $sAttrib &= ' /S'
    EndIf
    If $iSort = 1 Then
        $sAttrib &= ' /O:N'
    EndIf
    Switch $iFlag
        Case 1
            $sAttrib &= ' /A-D'
        Case 2
            $sAttrib &= ' /AD'
        Case Else
            $sAttrib &= ' /A'
    EndSwitch
    $sOut = StringToBinary('0' & @CRLF, 2)
    $sPath = StringRegExpReplace($sPath, '\\+$', '')
    $sFileMask = StringRegExpReplace($sFileMask, '^;+|;+$', '')
    $sFileMask = StringRegExpReplace($sFileMask, ';{2,}', ';')
    $aMasks = StringSplit($sFileMask, ';')
    For $i = 1 To $aMasks[0]
        If StringStripWS($aMasks[$i], 8) = "" Then
            ContinueLoop
        EndIf
        $sFiles &= '"' & $sPath & '\' & $aMasks[$i] & '"'
        If $i < $aMasks[0] Then
            $sFiles &= ';'
        EndIf
    Next
    $hDir = Run(@ComSpec & ' /U /C DIR ' & $sFiles & ' /B' & $sAttrib, @SystemDir, @SW_HIDE, 6)
    While 1
        $sRead = StdoutRead($hDir, False, True)
        If @error Then
            ExitLoop
        EndIf
        If $sRead <> "" Then
            $sOut &= $sRead
        EndIf
    WEnd
    $aOut = StringRegExp(BinaryToString($sOut, 2), '[^\r\n]+', 3)
    If @error Or UBound($aOut) < 2 Then
        Return SetError(2, 0, 0)
    EndIf
    $aOut[0] = UBound($aOut) - 1
    Return $aOut
EndFunc   ;==>_FileSearch



Добавлено:
Сообщение автоматически объединено:
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
scanfail
Поиск по форуму не работает?
 
Автор
S

scanfail

Знающий
Сообщения
244
Репутация
17
CreatoR, я искал, но нужного так и не нашел :(


Добавлено:
Сообщение автоматически объединено:

joiner, спасибо за код, но как выключить первый MsgBox?
 

DarWiM

Продвинутый
Сообщения
527
Репутация
90
Код:
$aArray = DriveGetDrive("fixed")
For $1i = 1 To UBound($aArray) - 1
    $aReturn = _FileSearch($aArray[$1i], "название папки", 2, 1)
    For $i = 1 To UBound($aReturn) - 1
        If $i<>1 Then MsgBox(0, '', $aReturn[$i])
    Next
Next
 
Верх