FileListToArray ohne versteckte Ordner

  • HI!

    Möchtest du komplett garkeine Versteckten Ordner in der Liste,oder das diese 3 nicht mit in die Liste gelesen werden, oder möchtest du das sie mit gelesen werden und im Nachhineinein entfernt werden ?

    Lg,

    Lenny

    Jaja, Moo does the Cow!

  • also wie genau, ist mir im grunde egal ... ich habe es eigentlich so:

    ich lasse alle ordner listen und lösche dann die, die mich stören raus. SVI fällt direkt raus, weil da ein @error kommt ...
    danach mache ich ...

    [autoit]

    $ArSearch = _ArraySearch($FolderAr, "RECYCLER")
    If $ArSearch = 1 Then
    _ArrayDelete($FolderAr, $ArSearch)
    $FolderAr[0] = UBound($FolderAr) - 1
    EndIf
    $ArSearch = _ArraySearch($FolderAr, "$RECYCLE.BIN")
    If $ArSearch = 1 Then
    _ArrayDelete($FolderAr, $ArSearch)
    $FolderAr[0] = UBound($FolderAr) - 1
    EndIf

    [/autoit]

    ... $RECYCLE.BIN wird durch das obige vorgehen gelöscht, aber der Ordner RECYCLER wird nicht aus dem Array gelöscht ... wieso ?

    • Offizieller Beitrag

    Ich denke mal das liegt daran, das du abfragst ob das _ArraySearch Resultat 1 ist . Der Eintrag RECYCLER kann auch an einer anderen Stelle als der 1. Stehen.
    Aus der Hilfe :

    Function _ArraySearch
    Return Value

    Success: The index that $vValue was found at (ist also Unwahrscheinlich das es genau 1 ist )


    Probier mal das :

    [autoit]

    $ArSearch = _ArraySearch($FolderAr, "RECYCLER")
    If Not @error Then
    _ArrayDelete($FolderAr, $ArSearch)
    $FolderAr[0] = UBound($FolderAr) - 1
    EndIf
    $ArSearch = _ArraySearch($FolderAr, "$RECYCLE.BIN")
    If Not @error Then
    _ArrayDelete($FolderAr, $ArSearch)
    $FolderAr[0] = UBound($FolderAr) - 1
    EndIf

    [/autoit]
    • Offizieller Beitrag
    Spoiler anzeigen
    [autoit]

    #include <Array.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $re = __FileListToArray('c:\', '*', 3)
    ConsoleWrite(@error & @CRLF)
    _ArrayDisplay($re)

    [/autoit] [autoit][/autoit] [autoit]

    Func __FileListToArray($sPath, $sFilter = "*", $iFlag = 0)
    Local $hSearch, $sFile, $asFileList[1]
    If Not FileExists($sPath) Then Return SetError(1, 1, "")
    If (StringInStr($sFilter, "\")) Or (StringInStr($sFilter, "/")) Or (StringInStr($sFilter, ":")) Or (StringInStr($sFilter, ">")) Or (StringInStr($sFilter, "<")) Or (StringInStr($sFilter, "|")) Or (StringStripWS($sFilter, 8) = "") Then Return SetError(2, 2, "")
    If Not ($iFlag = 0 Or $iFlag = 1 Or $iFlag = 2 Or $iFlag = 3) Then Return SetError(3, 3, "")
    If (StringMid($sPath, StringLen($sPath), 1) = "\") Then $sPath = StringTrimRight($sPath, 1) ; needed for Win98 for x:\ root dir
    $hSearch = FileFindFirstFile($sPath & "\" & $sFilter)
    If $hSearch = -1 Then Return SetError(4, 4, "")
    While 1
    $sFile = FileFindNextFile($hSearch)
    If @error Then
    SetError(0)
    ExitLoop
    EndIf
    If $iFlag = 1 And StringInStr(FileGetAttrib($sPath & "\" & $sFile), "D") <> 0 Then ContinueLoop
    If $iFlag = 2 And StringInStr(FileGetAttrib($sPath & "\" & $sFile), "D") = 0 Then ContinueLoop
    If $iFlag = 3 And StringInStr(FileGetAttrib($sPath & "\" & $sFile), "D") = 0 Or StringInStr(FileGetAttrib($sPath & "\" & $sFile), "H") <> 0 Then ContinueLoop
    $asFileList[0] += 1
    If UBound($asFileList) <= $asFileList[0] Then ReDim $asFileList[UBound($asFileList) * 2]
    $asFileList[$asFileList[0]] = $sFile
    WEnd
    FileClose($hSearch)
    ReDim $asFileList[$asFileList[0] + 1] ; Trim unused slots
    Return $asFileList
    EndFunc ;==>__FileListToArray

    [/autoit]

    Mega