Dateien in Ordner/Unterordner nach Schlagwort durchsuchen

  • Hallo,
    ich habe sehr viele Dateien auf meinem PC in einem Ordner mit verwertbaren daten,
    jetzt wollte ich, das ich nicht immer so ewig brauche, ein Script schreiben das alle Dateien in einem Ordner und deren Unterordnern durchsucht nach einem bestimmten Schlagwort
    was brauche ich? wie gehe ich vor?
    mfg

  • Hallo,

    schau Dir doch mal FileFindFirstFile und FileFindNextFile an... Das könnte Dir schon bei deiner Suche helfen. Bei Fragen helfe ich gerne weiter.


    Gruß

    Sol.LrMartyn

  • habe es jetzt mit arrays gemacht :/
    like this?

    [autoit]

    #include <File.au3>
    #include <Array.au3>

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

    Global $Ordner = @ScriptDir & "\"
    Global $SearchString = "Montag"
    Global $FolderListResult[1]
    Global $Result[1]

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

    _GetAllFolders($Ordner)
    _ArrayDisplay($FolderListResult)

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

    ConsoleWrite($FolderListResult[0] & @CRLF)
    For $l = 1 To $FolderListResult[0]
    _Search($FolderListResult[$l])
    Next
    ;_ArrayDisplay($Result)

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

    Func _Search($SearchPath)
    $FileList = _FileListToArray($SearchPath, "*", 1)
    For $i = 1 To $FileList[0]
    $ReadedFile = FileRead($FileList[$i])
    If StringInStr($ReadedFile, $SearchString) Then
    _ArrayAdd($Result, $FileList[$i])
    EndIf
    Next
    EndFunc

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

    Func _GetAllFolders($Ordner)
    _ArrayAdd($FolderListResult, $Ordner)
    $FolderList = _FileListToArray($Ordner, "*", 2)
    If $FolderList = 0 Then Return
    For $i = 1 To $FolderList[0]
    _GetAllFolders($Ordner & $FolderList[$i] & "\")
    Next
    EndFunc

    [/autoit]

    so gehts aber nicht, er gibts nicht aus :/

    [autoit]

    _GetAllFolders($Ordner)

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

    _ArrayDisplay($FolderListResult) ;hier zeigt er noch alles an

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

    ConsoleWrite($FolderListResult[0] & @CRLF) ;dann gehts hier und...

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

    For $l = 1 To $FolderListResult[0] ;...hier nicht mehr :/

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

    _Search($FolderListResult[$l])

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

    Next

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

    ;_ArrayDisplay($Result)

    [/autoit]

    Einmal editiert, zuletzt von Zattoo (27. August 2012 um 14:56)

  • Gib mir ein bisschen Zeit, ich schaue es mir im Laufe des Tages an, ok? Habe nicht sofort Zeit dafür.

  • Äh, kurze Zwischenfrage, Du packst das später schon in eine ordentliche GUI oder?

  • jap
    mit fileopendialog und unten dann die dateien in der der inhalt steht in einem log
    wäre geil wenn man doppelklick draufmachen kann und dann öffnet man die datei

  • Ich bastel gleich mal was eigenes zusammen.

    Und schreib es mal hierrein, mal schau wies läuft.

  • Also

    [autoit]

    ; Shows the filenames of all files in the current directory.
    Local $search = FileFindFirstFile("*.pdf")
    ; Check if the search was successful
    If $search = -1 Then
    MsgBox(0, "Error", "No files/directories matched the search pattern")
    Exit
    EndIf
    While 1
    Local $file = FileFindNextFile($search)
    If @error Then ExitLoop
    MsgBox(4096, "File:", $file)
    WEnd
    ; Close the search handle
    FileClose($search)

    [/autoit]

    ist schon mal ein Anfang, er findet damit bei PDF die in dem Ordner liegen. Und ich glaube, daraus kann man deutlich mehr basteln.


    Habe die zwei Fotos genommen und dort dasselbe ausprobiert und noch andere Kombinationen. Da kommt kein Ergebnis. Oder habe ich grade was übersehen, Zattoo?

  • danke für deine mühe, aber das habe ich ja schon :/
    habe dir in der email geschrieben das das auslesen der remote files in ein array nicht geht, das sind ja die lokalen dateien, das habe ich ihm thread leider vergessen :/
    so war mein versuch:

    Spoiler anzeigen
    [autoit]

    Func _FTPGetAllFolders($FTPPath = "", $FTPSubPath = "0")
    If $FTPSubPath = "0" Then
    _FTP_DirSetCurrent($FTPConnect, "/")
    Else
    _FTP_DirSetCurrent($FTPConnect, $FTPPath)
    EndIf
    ConsoleWrite(_FTP_DirGetCurrent($FTPConnect) & @CRLF)

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

    $FTPFolderList = _FTP_ListToArray($FTPConnect, 1)
    If $FTPFolderList[0] = 0 Then MsgBox(0,"","return")
    For $p = 1 To $FTPFolderList[0]
    If Not StringInStr($FTPPath & $FTPFolderList[$p], ".") Then
    _ArrayAdd($RemoteFolderListResult, $FTPPath & $FTPFolderList[$p])
    _FTPGetAllFolders($FTPPath & $FTPFolderList[$p] & "/", $FTPFolderList[$p])
    EndIf
    Next
    EndFunc

    [/autoit]

    danke trotzdem für die mühe :)

  • Na ja, sowas weiß ich ja noch nicht, xD... Hm, also externe Festplatte anschließen oder wie? xD

  • ne :D
    vom ftp server die remote files rekursiv in ein array ausgeben :)
    aber es will nicht wie ich will, das ist mein 100. versuch :/

    Ah ok, nen FTP hab ich auch, ich schau mal, brauche aber da ein paar Min, xD