Jedes 5. Zeichen in allen Zeilen einer Textdatei ersetzen

  • VBScript

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von Sachsenbauch.

    Jedes 5. Zeichen in allen Zeilen einer Textdatei ersetzen

    Hallo,
    ich möchte in einer Textdatei jedes fünfte Zeichen pro Zeile durch ein anderes ersetzen.
    So soll aus 5214=Carnibutius Mengeri ... 5214;Carnibutius Mengeri... werden, das Zeichen an 5. Stelle kann aber verschieden sein.
    Mein bisheriger Code

    Visual Basic-Quellcode

    1. Set objFSO = CreateObject("Scripting.FileSystemObject")
    2. Set objFile = objFSO.OpenTextFile("Eingabe.txt", 1) ' nur zum Lesen Öffnen
    3. Neu = objFile.ReadAll
    4. objFile.Close
    5. Neu1 = Replace(Neu, vbTab, " ")
    6. Neu2 = Replace(Neu1, "<DIR>" , "")
    7. Neu3 = Replace(Neu3, "\", "")
    8. Neu4 = Replace(Neu4, Mid(Neu4,5,1), ";") ' ersetzt alle gleichen Zeichen wie die des 5. Zeichens
    9. ' es soll aber nur das 5. Zeichen ersetz werden
    10. Set objFile = objFSO.CreateTextFile("Ausgabe.txt")
    11. objFile.WriteLine Neu4
    12. objFile.Close


    Über konkrete Hilfe würde ich mich sehr freuen :P
    Danke M:cha

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Sachsenbauch“ () aus folgendem Grund: Tippfehler korrigiert (Zeile 9)

    Visual Basic-Quellcode

    1. IF MID(neu, 5, 1) = vbTab then Neu1 = LEFT(Neu, 4) & ";" & MID(Neu, 6)
    2. IF MID(neu, 5, 1) = "\" THEN Neu3 = LEFT(Neu, 4) & MID(Neu, 6)


    Setzt aber zeilenweise Bearbeitung voraus.

    Neu2 = Replace(Neu1, "<DIR>" , "")
    <DIR> kann nicht 'das' 5. Zeichen sein

    Verständlicher wird dein Problem, wenn du anstatt deiner Beschreibung ein paar 'echte' Zeilen der "Eingabe.txt" und der "Ausgabe.txt, so wie du sie dir vorstellst, zeigst.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Eierlein“ ()

    Hallo Eierlein,
    ich glaube ich habe mich etwas unglücklich ausgedrückt. Mein Script erledigt alles korrekt bis auf die Zeile 9

    Visual Basic-Quellcode

    1. Neu4 = Replace(Neu4, Mid(Neu4,5,1), ";") ' ersetzt alle gleichen Zeichen wie die des 5. Zeichens
    2. ' es soll aber nur das 5. Zeichen ersetzt werden

    mir fehlt noch eine Codezeile, die das fünfte Zeichen in dieser "Quelldatei" umwandelt:

    Visual Basic-Quellcode

    1. 5214=Carnibutius Mengeri\ <DIR> 25.04.2012 13:00 ----
    2. 8817+Leptinotarsa decemlineata\ <DIR> 25.04.2012 13:00 ----
    3. 9001-Foetidum pedes\ <DIR> 25.04.2012 13:00 ----
    an 5. Stelle sind unterschiedliche Zeichen, die mal Aufschluss über die Qualität des "Ordner-Inhalts" gaben.
    Die Ausgabedatei sollte dann so aussehen:

    Visual Basic-Quellcode

    1. 5214;Carnibutius Mengeri
    2. 8817;Leptinotarsa decemlineata
    3. 9001;Foetidum pedes
    wobei also das fünfte Zeichen ein Semikolon ist.
    Die anderen Zeilen sollen wie erwähnt unberücksichtigt bleiben, denn die erfüllen ihren Zweck. :!:

    Tot ziens
    M:cha
    Hi Katmay,
    geht nicht. Fehler: Objekt erforderlich: 'Neu4.'
    Wahrscheinlich kennt er Substring nicht (ich auch nicht).
    Nehme ich stattdessen als Zeile 9

    Visual Basic-Quellcode

    1. Neu4 = Mid(Neu3,1,4) & ";" & Mid(Neu3, 6, 100)

    wird nur die erste Zeile (5214;....) mit Semikolon versehen. :?:

    LG M:cha
    Hi Katmay,
    geht nicht. Fehler: Objekt erforderlich: 'Neu4.'

    Katmay kennt nicht den Unterschied zwischen vb.net und VBS.


    wird nur die erste Zeile (5214;....) mit Semikolon versehen.


    Tja, weil du den kompleten Text einliest.
    Wie ich schon weiter oben angemerkt habe,musst du den Text zeilenweise bearbeiten.
    Entweder über ein Array oder ganz einfach zeilenweise einlesen, bearbeiten und ausgeben.

    Versuchs mal so:

    Visual Basic-Quellcode

    1. Set objFSO = CreateObject("Scripting.FileSystemObject")
    2. Set objFileEin = objFSO.OpenTextFile("Eingabe.txt", 1) ' nur zum Lesen Öffnen
    3. Set objFileAus = objFSO.CreateTextFile("Ausgabe.txt")
    4. Do Until objFileEin.AtEndOfStream
    5. Neu = objFileEin.ReadLine
    6. i = InStr(Neu, "\")
    7. Neu4 = Left(neu, 4) & ";" & Mid(neu, 6, i - 6)
    8. objFileAus.WriteLine Neu4
    9. Loop
    10. objFileEin.Close
    11. objFileAus.Close