IniRead: Automatisch Anzahl der Schlüssel erkennen

  • Nabend

    Ich würde gerne ein Script schreiben, welches von einer IniDatei die zu sichernden Dateien liest, und diese in einem Backup-Verzeichnis speichert. Nun stehe ich erstmal vor dem Problem wie ich das Script dazu bringe dass er automatisch erkennt wieviele Dateien er sichern muss. Mal angenommen in der Ini Datei heisst die Sektion [Files] und hat dann Schlüssel wie z. B. File1, File2, File3 usw. Beliebig viele halt. Wie bringe ich es jetzt nun zustande dass mein Script automatisch erkennt wieviele Zeilen darin stehen. Ich kann ja schlecht vorsorglich bis File100 gehen und dabei braucht der User dann nur 2.
    Hoffe mal es war einigermassen verständlich erklärt. :)

    Ahatius

    Einmal editiert, zuletzt von ahatius (24. März 2009 um 20:58)

  • Das würde ich mit StringSplit machen und dieses dann als Array in einer For... Next Schleife laufen lassen.

  • Spoiler anzeigen
    [autoit]

    $INI = IniReadSection (@ScriptDir & "\Test.ini","Files")
    For $1 = 1 To $INI[0][0]
    MsgBox (0,"",$INI[$1][1])
    Next

    [/autoit]
    INI
    Code
    [Files]
    1=C:\1.txt
    2=C:\2.txt
    3=C:\3.txt
    4=C:\4.txt
    5=C:\5.txt
    6=C:\6.txt

    mfg. Jam00

  • Sieht so weit eigtl. recht gut aus, nur will der Filemove Befehl nicht so recht. Ich habe die Pfade bereits mit MsgBox überprüft, und sie haben keine komischen Fehler drin oder sowas dergleichen, trotzdem wird der FileCopy nicht ausgeführt :\

    [autoit]

    $Section = IniReadSection (@ScriptDir & "\restore.ini", "Files")
    For $Key = 1 To $Section[0][0]
    FileMove(@ScriptDir & $Section[$Key][1], @ScriptDir & "\Backup" & $Section[$Key][1])
    ;MsgBox(64, "test", @ScriptDir & $Section[$Key][1])
    Next

    [/autoit]
  • Poste mal bitte den Kompletten Code und wie die INI datei bei dir aussieht. Bis jetzt kann ich nur sagen, dass vielleicht ein "\" fehlt bei:

    @ScriptDir & $Section[$Key][1]

    so vielleicht ?

    @ScriptDir & "\" & $Section[$Key][1]

  • Wie sieht es hiermit aus?

    [autoit]

    FileCopy(@ScriptDir & '\' & $Section[$Key][1], @ScriptDir & "\Backup\" & $Section[$Key][1], 8)

    [/autoit]
  • Das ist momentan der ganze Code, die Beispielini sieht im Moment wie folgt aus:

    Spoiler anzeigen

    [Files]
    File1=\Test\blub.txt
    File2=\l o l\wtf is.txt

    Der \ ist bereits in der ini beinhaltet, daher nehme ich nicht an dass es an einem fehlendem Backslash liegt :\

    @prizma
    Nett, hat funktioniert, muss jetzt einfach von Hand die Source Dateien löschen, aber solangs funktioniert ;) Nur das Flag 8 scheint mir laut AutoIt Hilfe nicht gültig zu sein, ist dass evtl. eine neuere Version?