Programm zum automatischen einfügen einer fortlaufenden ID

  • Hallo zusammen,

    ich suche jemanden der mir mal bitte ein Programm schreiben kann!

    Das Programm soll in einer .data Datei (Aufbau siehe Code) immer nach der Zeile mit dem Eintrag * suchen und davor immer eine neue Zeile mit fortlaufender ID einfügen anfangend bei 000001. Die .data Datei enthällt mehrere abschnitte mit dem * wodurch er eben die gesamte .data Datei durchsuchen muss und anfangend beim ersten * mit 000001 und wenn es eben 10 Einträge sind bei dem letztem mit in dem Fall 000010 endet!
    Die .data Datein ohne ID liegen im Verzeichnis E:\Datas ohne ID , was heist das ich das Skript/die exe des Skriptes dann hier und nur hier in dem Ordner ausführe!
    Es liegen in dem Verzeichnis E:\Datas ohne ID unbestimmt viele .data Datein drin! Bei jeder .data Datei muss dieser Prozess sepperat durchlaufen werden, dh. erste bearbeiten beginnend mit ID 000001 fertig machen, dann zweite bearbeiten und wieder beginnend mit ID 000001 usw.
    Falls dazu die .data Datein geöffnet werden müssen, soll dies bitte mit notepad++ geschehen!

    Der Ablauf sollte ungefähr wie folgt aussehen:
    - in der Kopfzeile von jeder .data Datei vor ;* soll eingefügt werden ;ID
    - .data Datei durchsuchen nach den Zeilen mit *
    - vor die Zeilen mit dem * jeweils eine neue Zeile einfügen
    - darin dann die fortlaufenden ID´s beginnend bei 000001 eintragen bis es keinen * mehr gibt
    - Speichern der .data Datei mit dem selben Namen und Format (.data) die sie beim öffnen hat in folgendem Ordner Pfad: E:\Datas mit ID
    - schliessen der original Datei aber hier die Änderungen nicht speichern!

    Original:

    Spoiler anzeigen



    Danach sollte es ca. so aussehen:

    Spoiler anzeigen

    Ich hoffe das jemand soviel Lust und Zeit hat und mir das bitte bitte erstellen kann!
    Sollten noch Fragen sein einfach stellen!

    Mfg Ghostleader

    Einmal editiert, zuletzt von Ghostleader (10. Februar 2012 um 16:43)

  • Sollte so funktionieren

    Spoiler anzeigen
    [autoit]

    #include <File.au3>
    $List = _FileListToArray("E:\Datas ohne ID", "*", 1)

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

    For $i = 1 To $List[0]
    $hFile = FileOpen("E:\Datas ohne ID\" & $List[$i], 0)
    $Read = FileRead($hFile)
    FileClose($hFile)
    $hFile = FileOpen("E:\Datas mit ID\" & $List[$i], 2)
    $tmpsplit = StringSplit($Read, @CRLF)
    $Counter = 1
    For $k = 1 To $tmpsplit[0]
    If $tmpsplit[$k] = "" Then ContinueLoop
    If StringRight($tmpsplit[$k], 1) = "*" Then
    $tmpsplit[$k] = StringTrimRight($tmpsplit[$k], 1)&"ID;*"
    EndIf
    If $tmpsplit[$k] = "*" Then
    $tmpsplit[$k] = StringFormat("%06d", $Counter) & @CRLF & "*"
    $Counter += 1
    EndIf
    FileWrite($hFile, $tmpsplit[$k]&@CRLF)
    Next
    FileClose($hFile)
    Next

    [/autoit]
  • Hallo TheLuBu,

    danke erstmal für deine Arbeit und ich konnte es jetzt erst testen!

    Also es funktioniert fast richtig, das einzige was nicht funkzioniert ist, in der data wo es eine zeile einfügen soll vo dem Stern denn da kommt statt beginnend mit 00001 auch wie in der Kopfzeile ID und das auch nicht als extra Zeile sondern direkt vor dem Stern also der Stern steht neben nicht unter ID (siehe Spoiler)!

    So müsste es aussehen!

    Spoiler anzeigen


    Und so sieht es jetzt momentan aus!

    Spoiler anzeigen


    Auch muss das Komma (ID,*) hier weg, denn dies darf nur in der Kopfzeile stehen!

    Mfg Ghostleader

  • Damit sollte es jetzt aber funktionieren

    Spoiler anzeigen
    [autoit]

    #include <File.au3>
    $List = _FileListToArray("E:\Datas ohne ID", "*", 1)

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

    For $i = 1 To $List[0]
    $hFile = FileOpen("E:\Datas ohne ID\" & $List[$i], 0)
    $Read = FileRead($hFile)
    FileClose($hFile)
    $hFile = FileOpen("E:\Datas mit ID\" & $List[$i], 2)
    $tmpsplit = StringSplit($Read, @CRLF)
    $Counter = 1
    For $k = 1 To $tmpsplit[0]
    If $tmpsplit[$k] = "" Then ContinueLoop
    If StringRight($tmpsplit[$k], 2) = ";*" Then
    $tmpsplit[$k] = StringTrimRight($tmpsplit[$k], 1)&"ID;*"
    EndIf
    If $tmpsplit[$k] = "*" Then
    $tmpsplit[$k] = StringFormat("%06d", $Counter) & @CRLF & "*"
    $Counter += 1
    EndIf
    FileWrite($hFile, $tmpsplit[$k]&@CRLF)
    Next
    FileClose($hFile)
    Next

    [/autoit]