Universeller Datei / Ordner Sucher [ _Get_DateiSucher_Netzwerk_Dos ]

  • Universeller Datei / Ordner Sucher [ _Get_DateiSucher_Netzwerk_Dos ]
    Hallo Leute!
    Ich habe eine Universelle Funktion geschrieben die nach jeder Beliebigen Datei / Ordner Sucht
    Auf Lokal, Netzwerk u. CD/DVD Laufwerken natürlich auch USB.
    Die Funktion setzt sich aus_FileFindNet($SFile, $NPath , $LPath , $Path , $ESch) zusammen, läuft über CMD.

    Wildcards[ Gesuch* ( nicht CD/DVD Netzwerk ) | Gesuch.* ( nicht CD/DVD Netzwerk ) | *.Gesuch ( nicht Netzwrk ) | *.* ]


    Update: Wenn Fehler wir Error auf -1 gesetzt, Einstellung der Wildcards und ob Datei oder Pfad ausgegeben werden soll!

    Spoiler anzeigen
    [autoit]

    #include-once
    #include <File.au3>
    ;==========================================================================================================
    ; Function Name: _FileFindNet($SFile, $NPath = True, $LPath = True, $Path = True, $ESch = True)
    ; Description: Auflistung von Dateien und Ordnern auf Lokalen, Netzwerk, CD/DVD - Laufwerk
    ; Parameter(s): $SFile der oder die zur Suchende Datei / Ordner
    ; $Path Lokaler Pfad
    ; $NetPath Netzwerk Pfad
    ; $Path 0 Mit Datei ausgabe, 1 nur Pfad ausgabe mit abschliesenden '\' auser bei
    ; benutzug von Wildcards (*.*)
    ; $ESch Einstellung der Wildcards [ 0 alle benutzbar , 1 (.*) nicht benutzbar ,
    ; 2 (*.) nicht benutzbar , 3 (*.*) keine Wildcards benutzbar
    ; Return Value(s): Array (Standard) mit den gefundenen Pfaden der Dateien und/oder Ordner
    ; Array[0] enthält die Anzahl der gefundenen Dateien/Ordner auser bei suche
    ; mit *.*
    ; wird $NetPath oder $Path nicht benutzt dann ein [ '' ] angeben
    ; Es geht nur einzelt entweder $Path oder $NetPath beides zusammen nicht!
    ; Wildcards[ Gesuch* ( nicht CD/DVD Netzwerk ) | *Gesuch ( nicht Netzwerk )
    ; |Gesuch.* ( nicht CD/DVD Netzwerk ) |*.Gesuch ( nicht Netzwrk ) | *.* ]
    ;
    ; bei Fehler wird Error auf -1 gesetzt
    ;
    ; Author(s): Kleiner27
    ;========================================================================================================

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

    Func _FileFindNet($SFile, $NPath = True, $LPath = True, $Path = True, $ESch = True)
    Dim $aEw[18] = ['*.*', '\\', '*', '.', '', '\', 'CDFS', 'UDF', 'dir /a /b /s ', ' ', ' /c ', 'Ü', 'ü', 'Ö', 'ö', 'Ä', 'ä', 'ß']
    Dim $Such = $SFile, $Proc, $line, $Ers, $aAr, $aN[1], $szDrive, $szDir, $szFName, $szExt, $EV, $evt, $PSp, $w, $z = 1
    Dim $STA1 = StringRight($Such, 1)
    Dim $STA2 = StringLeft($Such, 1)
    Dim $STA3 = StringLeft($NPath, 2)
    Dim $STA4 = DriveGetFileSystem($LPath)
    If $STA4 = $aEw[6] Or $STA4 = $aEw[7] And $STA1 = $aEw[2] And $Such <> $aEw[0] Then Return SetError(-1)
    Switch $ESch
    Case 0
    If $STA1 = $aEw[2] Or $STA2 = $aEw[2] And $Such <> $aEw[0] And $STA3 = $aEw[1] Then Return SetError(-1)
    Case 1
    If $STA1 = $aEw[2] Then Return SetError(-1)
    Case 2
    If $STA2 = $aEw[2] Then Return SetError(-1)
    Case 3
    If $STA2 = $aEw[2] Or $STA1 = $aEw[2] Then Return SetError(-1)
    EndSwitch
    If $Such = $aEw[0] Or $STA1 = $aEw[2] Or $STA2 = $aEw[2] Then
    $w = 0
    Else
    For $i = 11 To 1 Step -1
    If StringRight($Such, $i) = $aEw[3] & StringRight($Such, $i - 1) Then $Such = $aEw[2] & StringRight($Such, $i)
    Next
    If $Such = $SFile Then $Such = $aEw[0]
    $w = 1
    EndIf
    $Proc = Run(@ComSpec & $aEw[10] & $aEw[8] & $Such & $aEw[9] & $NPath, $LPath, @SW_HIDE, 2)
    While 1
    $line &= StdoutRead($Proc, 0, 0)
    If @error Then ExitLoop
    $Ers = StringReplace(StringReplace(StringReplace(StringReplace(StringReplace(StringReplace(StringReplace($line, Chr(154), $aEw[11]), Chr(129), $aEw[12]), Chr(153), $aEw[13]), Chr(148), $aEw[14]), Chr(142), $aEw[15]), Chr(132), $aEw[16]), Chr(225), $aEw[17])
    WEnd
    $aAr = StringSplit(StringTrimRight($Ers, 2), @CRLF, 3)
    If $Such = $aEw[0] And $STA3 = $aEw[1] Or $Such = $aEw[0] And $w = 0 Or $aAr[0] = $aEw[4] Then Return $aAr
    Switch $Path
    Case 1
    Switch $w
    Case 0
    For $i = 0 To UBound($aAr) - 1
    ReDim $aN[$z + 1]
    $PSp = _PathSplit($aAr[$i], $szDrive, $szDir, $szFName, $szExt)
    $aN[$z] = $PSp[1] & $PSp[2]
    $z += 1
    Next
    $aN[0] = $z - 1
    Return $aN
    Case 1
    For $i = 0 To UBound($aAr) - 1
    $Str = StringSplit($aAr[$i], $aEw[5])
    If $Str[$Str[0]] = $SFile Then
    ReDim $aN[$z + 1]
    $PSp = _PathSplit($aAr[$i], $szDrive, $szDir, $szFName, $szExt)
    $aN[$z] = $PSp[1] & $PSp[2]
    $z += 1
    EndIf
    Next
    $aN[0] = $z - 1
    Return $aN
    EndSwitch
    Case Else
    Switch $w
    Case 0
    For $i = 0 To UBound($aAr) - 1
    ReDim $aN[$z + 1]
    $aN[$z] = $aAr[$i]
    $z += 1
    Next
    $aN[0] = $z - 1
    Return $aN
    Case 1
    For $i = 0 To UBound($aAr) - 1
    $Str = StringSplit($aAr[$i], $aEw[5])
    If $Str[$Str[0]] = $SFile Then
    ReDim $aN[$z + 1]
    $aN[$z] = $aAr[$i]
    $z += 1
    EndIf
    Next
    $aN[0] = $z - 1
    Return $aN
    EndSwitch
    EndSwitch
    EndFunc ;==>_FileFindNet

    [/autoit]


    Spoiler anzeigen
    [autoit]

    #include <_FileFindNet.au3>
    #include <Array.au3>

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

    $aTest = _FileFindNet('note*','','C:\',0,0)
    _ArrayDisplay($aTest)

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

    $aTest = _FileFindNet('notepad.*','','C:\',0,1)
    _ArrayDisplay($aTest)

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

    $aTest = _FileFindNet('*.log','','C:\',1,0)
    _ArrayDisplay($aTest)

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

    $aTest = _FileFindNet('notepad.exe','','C:\',0,0)
    _ArrayDisplay($aTest)

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

    $aTest = _FileFindNet('Temporary Internet Files','','C:\',0,0)
    _ArrayDisplay($aTest)

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

    $aTest = _FileFindNet('*.*','','C:\',0,0)
    _ArrayDisplay($aTest)

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

    $aTest = _FileFindNet('*.bat','','C:\',0,0)
    _ArrayDisplay($aTest)

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

    $aTest = _FileFindNet('*.wma','','C:\',0,0)
    _ArrayDisplay($aTest)

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

    $aTest = _FileFindNet('*mp3','','C:\',0,2)
    _ArrayDisplay($aTest)

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

    $aTest = _FileFindNet('win*','','C:\',1,0)
    _ArrayDisplay($aTest)

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

    ;$aTest = _FileFindNet('*.*','\\TestPC\C','')
    ;_ArrayDisplay($aTest

    [/autoit]

    Und noch mal zu Downloaden!


    Viel spass!

    LG Kleiner

  • Super! Genau so etwas habe ich bei AutoIt vermisst.
    Kleiner Tipp: Ich würde die Datei nicht _Get_DateiSucher_Netzwerk_Dos.au3 nennen, da keiner Bock hat immer
    #inclunde <_Get_DateiSucher_Netzwerk_Dos.au3> zu schreiben. Nenn sie am besten sucher.au3 oder so...

    Spoiler anzeigen

    Grundkenntnisse in: C++, JavaScript
    Sehr gute Kenntnisse: PHP, JAVA, C und näturlich AutoIt


    Klaviatur, Anhang UDF, GDI+ Mühle

    Zitat

    "Wenn einen um 20h der Pizzadienst anruft und fragt, ob man's nur vergessen hat und ob man das gleiche
    möchte wie immer -- dann sollte man sein Bestellverhalten evtl überdenken"

  • Hallo cartan12 & Pinguin94 !

    Danke und schön das es euch gefällt!
    Und auf eure bemerkung der bezeichnugs wegen habt hir recht als ich angefangen habe die Func zu schreiben habe ich sie so genant.
    Die Idee von Pinguin94 hört sich ganz gut an werde mich da heute Abend darum kümmern! :)

    Vieleict hat einer von euch ja noch ein paar andere bezeichnugen für die Func bis heute Abend ! :D
    Bitte Posten!!!!! :thumbup:


    LG Kleiner

  • Guten Morgen!


    Also ich habe mich für _FileFindNet entschieden!
    Habe an der Funktion noch einwenig geschraubt habe da noch ein paar hundertstel rausgeholt !


    U-d: Post#1

    LG Kleiner