Text(Log)-Datei auslesen

  • VBScript

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von VaporiZed.

    Text(Log)-Datei auslesen

    Hallo zusammen,

    ich bin neu hier und bitte um Unterstützung zu folgendem Problem:

    Das Programm PurSync speichert eine Log-Datei, die ich als txt-Datei gespeichert habe. Ich habe sie als txt-Datei beigefügt, weil sie als log-Datei nicht hochgeladen werden kann. Das Ergebnis des Script ist für beide Datei-Formen identisch.

    Mit dem Script


    Visual Basic-Quellcode

    1. Dim s
    2. Dim fso
    3. Dim file
    4. Set fso = CreateObject("Scripting.FileSystemObject")
    5. Set WshShell = WScript.CreateObject("WScript.Shell")
    6. Set file = fso.OpenTextFile("D:\Sync S_O.txt")
    7. counter=0
    8. Do Until file.AtEndOfStream
    9. myStringVar = file.ReadLine
    10. counter = counter+1
    11. Loop
    12. Set file = fso.OpenTextFile("D:\Sync S_O.txt")
    13. s = file.ReadAll()
    14. file.Close
    15. MsgBox counter & " " & s
    16. WScript.Quit


    zähle ich die Zeilen in der Datei und versuche ich den Inhalt der Datei auszulesen. Die Anzahl der Zeilen passt, aber ansonsten kommen nur zwei merkwürdige Zeichen, der originäre Inhalt der Datei wird nicht angezeigt.

    Mit jeder anderen Text-Datei funktioniert das Scrpit einwandfrei.

    Was ist die Ursache und wie kann ich ggf. die Datei auslesen?

    Vielen Dank im voraus für die Hilfe!

    Tschar

    CodeTags gesetzt
    Thema verschoben; Das Thema wird automatisch dort erstellt, wo man sich befindet, wenn man auf [* Neues Thema] klickt.
    ~VaporiZed
    Dateien
    • Sync S_O.txt

      (1,41 kB, 90 mal heruntergeladen, zuletzt: )

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()

    Willkommen im Forum.

    In welcher Programmierumgebung bist Du unterwegs? VisualBasic Script oder Excel/Word, also VBA?
    Es liegt an der Codierung der Datei. Die ist auf UTF-16 LE eingestellt (zu sehen, wenn Du die Datei z.B. im Windows Notepad/Editor öffnest: unten rechts in der Infoleiste), das kann Dein Script nicht verarbeiten.
    Wenn Du die Datei mittels des Editors in einem anderen Dateiformat speicherst (über Speichern unter und dann im Dialog unten eine andere Codierung festlegst, kann es Dein Script verarbeiten.

    ########

    Ah, es geht einfacher: Bei OpenTextFile kannst Du einstellen, dass er die Datei mit Unicode-Codierung einlesen soll, dann klappt's auch, siehe MSDN-Doku.

    Visual Basic-Quellcode

    1. Set file = fso.OpenTextFile("D:\Sync S_O.txt", 1, False, -1)

    Bilder
    • Codierung.png

      20,89 kB, 551×425, 63 mal angesehen
    • Codierung ändern.png

      96,95 kB, 952×604, 59 mal angesehen
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

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

    Es handelt sich um einen UTF16 LE Text.

    Visual Basic-Quellcode

    1. Option Explicit
    2. Dim counter
    3. Dim fso
    4. Dim file, myStringVar
    5. Dim WshShell
    6. Set fso = CreateObject("Scripting.FileSystemObject")
    7. Set WshShell = WScript.CreateObject("WScript.Shell")
    8. Set file = fso.OpenTextFile("D:\#0\Sync S_O.txt",1,,True) '<---- UTF16 LE Text
    9. counter=0
    10. Do Until file.AtEndOfStream
    11.     myStringVar = myStringVar & file.ReadLine & vblf
    12.     counter = counter+1
    13. Loop
    14. file.Close
    15. MsgBox counter & vblf & myStringVar
    16. WScript.Quit

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

    Beide Lösungen? Post#3 ist inhaltlich zu Post#2 identisch, da in VBS gilt: True = -1
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.