_FileListToArray

  • Hallo


    ich stell mich leider wahrscheinlich einfach zu dumm an, aber ich muss sagen ich habe schon länger nichts mehr mit AutoIT gemacht


    Ich möchte eigentlich nur folgendes:

    Aus einem Verzeichnis Dateien einlesen mittels _FileListToArray.


    Diese eingelesenen Dateien der Reihe nach mit FileRead() öffnen und mit StringReplace() gewissen Zeichen ersetzen, dann mit FileClos oder FileWrite() wieder speichern.

    Aber ich kriegs dies nicht hin.


    Kann mir jemand einen kurzen Beispielcode geben ?


    Wäre super nett.


    Vielen Dank

  • [autoit]

    #include <File.au3>
    Global $FileString

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

    $aFiles = _FileListToArray(@ScriptDir, "*.txt", 1)

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

    For $i = 1 To $aFiles[0]
    _FileReadToArray($aFiles[$i], $FileString)
    For $j = 1 To $FileString[0]
    $FileString[$j] = StringReplace($FileString[$j], "a", "b")
    Next
    _FileWriteFromArray($aFiles[$i], $FileString, 1)
    Next

    [/autoit]
  • Sorry, irgendwie ist da noch ein Fehler drin


    For $i = 1 To $aFiles[0]


    Bei dieser Zeile schmeisst er mir den Fehler: ==> Subscript used with non-Array variable.: aus


    Hängt das mit der Deklaration oben zusammen ?

    Danke

  • Das heißt, dass _FileListToArray keine Daten gefunden hat.
    In _FileListToArray(@ScriptDir, "*.txt", 1) steht, dass nur *.txt -also TXT-Dateien aus dem Verzeichnis wo das Script gespeichert ist- gelesen werden
    Wenn keine Dateien gefunden werden gibts auch kein Array.
    Also Pfad und Filter anpassen ;)

  • Danke, da war tatsächlich ein Fehler drin, aber das ist nun der Code den ich habe


    #include <File.au3>

    Global $FileString
    Dim $Verzeichnis

    $Verzeichnis="C:\$install"
    msgbox(4096,"Title",$Verzeichnis)

    $aFiles = _FileListToArray($Verzeichnis,"abc*.*",1)

    For $i = 1 To $aFiles[0]

    _FileReadToArray($aFiles[$i], $FileString)
    For $j = 1 To $FileString[0]
    $FileString[$j] = StringReplace($FileString[$j], "a", "b")
    Next
    _FileWriteFromArray($aFiles[$i], $FileString, 1)
    Next


    Es gibt in dem Ordner Dateien die abc*.* heissen, aber trotzdem bekomme ich diesen Fehler

    (14) : ==> Subscript used with non-Array variable.:
    For $j = 1 To $FileString[0]
    For $j = 1 To $FileString^ ERROR
    ->14:08:47 AutoIT3.exe ended.rc:1
    +>14:08:48 AutoIt3Wrapper Finished


    Werde nocht weiter probieren, aber evtl. weiß noch jemand was.


    Herzlichen Dank

  • Gelöst.

    Vielen dank für die Hilfe

    Das Problem war einfach nur das er beim Einlesen der Dateien den Pfad nicht hatte.

    Herzlichen Dank für die schnelle HIlfe

    Einmal editiert, zuletzt von jmewald (12. Februar 2009 um 17:01)