muck2000
Goto Top

Wie füge ich ein Zeilenendezeichen in eine Textdatei ein?

Hallo Gemeinde, ein Hilferuf nach schon einigen Stunden des wurschtelns..:

Ich habe eine Textdatei (.asc/.txt) die kein Zeilenendezeichen enthält. Die Satzstruktur der Daten ist bekannt: 32 Felder mit jeweils bekannter Länge, gesamte Satzlänge eines Datensatzes 372 Zeichen. Es sind keine Trennzeichen zwischen den Feldern bzw. zwischen den Sätzen, alles hintereinander weggeschrieben, also auch die Folgesätze. Ein manuelles Bearbeiten der Datei (2,5MB) entfällt aufgrund der Datenfülle.
Da ich mit einer defenitiven Satzlänge und einem Zeilenendezeichen (CR/LF) oder einem anderen Satztrenner (TAB od. Semikolon) in EXCEL weiterkomme, wäre mir mit einem kleine Basicscript oder einer Batch-Datei seeehr geholfen.
Vielen Dank im Voraus.

Content-Key: 114289

Url: https://administrator.de/contentid/114289

Ausgedruckt am: 28.03.2024 um 15:03 Uhr

Mitglied: 77559
77559 20.04.2009 um 21:09:32 Uhr
Goto Top
Hallo muck2000,

einfach in einem cmd Fenster oder Batch ausführen:
Echo.>>VorhandeDatei.txt
geht auch andersrum
>>VorhandeDatei.txt Echo.

Gruß
LotPings
Mitglied: muck2000
muck2000 20.04.2009 um 21:20:13 Uhr
Goto Top
Hallo LotPings,
danke für die Antwort, aber trifft es nicht.
Ich möchte einen Datenstream einlesen und an bestimmter Stelle (nach 372 Zeichen jeweils) ein Zeichen einfügen. Dieser Vorgang wiederholt sich so oft, bis die unbekannte Anzahl an Gesamtdatensätzen durch einen Trennner (CR/LF, Tabstopp, Semikolon oder was auch immer) getrennt ist.
Kannst Du helfen?
Gruß
muck2000
Mitglied: bastla
bastla 20.04.2009 um 21:43:50 Uhr
Goto Top
Hallo Muck2000 und willkommen im Forum!

Versuch es einmal mit dem folgenden VBScript:
DateiEin = "D:\DateiEin.txt"  
DateiAus = "D:\DateiAus.txt"  
L = 372

Set fso = CreateObject("Scripting.FileSystemObject")  
TextGesamt = fso.OpenTextFile(DateiEin).ReadAll

Set Aus = fso.CreateTextFile(DateiAus)
For i = 1 To Len(TextGesamt) Step L
    Aus.WriteLine Mid(TextGesamt, i, L)
Next
Aus.Close
Grüße
bastla
Mitglied: 77559
77559 20.04.2009 um 21:51:43 Uhr
Goto Top
Hab erst zu schnell gelesen und jetzt war bastla mal wieder schneller face-wink

Falls OP etwas programmier Erfahrung hat käme auch auch eine komfortablere Lösung in betracht die direkt Excel Dateien erstellen kann. Auf CodeProject gibt es eine schöne unter LGPLstehende Library die ggfs alles erschlagen kann. FileHelpers v2

Gruß
LotPings
Mitglied: bastla
bastla 20.04.2009 um 22:00:36 Uhr
Goto Top
@77559
und jetzt war bastla mal wieder schneller face-wink
Ausnahmsweise ... face-wink

Wenn's nicht alle zwei Tage erforderlich ist, macht der Import in Excel als Textdatei "mit fester Breite" auch nicht so besonders viel Arbeit (einmal müssen die Feldlängen eben erfasst werden); abgesehen davon lässt sich das Script auch in VBA verwenden, womit sich dann ebenfalls gleich der Eintrag in eine Excel-Tabelle umsetzen lässt ...

Grüße
bastla
Mitglied: muck2000
muck2000 20.04.2009 um 22:00:39 Uhr
Goto Top
Hey, danke Ihr Beiden! Ich hab die Daten auf einem anderen Rechner und teste Bastla´s Skript morgen direkt aus. Sieht aber schon prima aus. Ich bedanke mich recht herzlich. Also, Erfolgsbestätigung morgen! Tschüss muck2000
Mitglied: 76109
76109 21.04.2009 um 09:29:04 Uhr
Goto Top
Hallo baslta,

Frage: Warum hast Du nicht

....
TextLine = Ein.Read(L)
Aus.WriteLine TextLine
....

verwendet.

Gruß Dieter
Mitglied: 77559
77559 21.04.2009 um 09:36:26 Uhr
Goto Top
Zitat von @76109:
Frage: Warum hast Du nicht
> TextLine = Ein.Read L 
> Aus.WriteLine TextLine
> 

verwendet.

Hallo Dieter.
Weil es keinen Recordseparator gibt - der soll doch erst erzeugt werden.
Du würdest die ganze Datei lesen und genauso wieder wegschreiben.

Gruß
LotPings
Mitglied: 76109
76109 21.04.2009 um 09:42:38 Uhr
Goto Top
Hallo LotPings,

bitte genau lesen.

Er liest mit Read(L) = Read Long Anzahl Zeichen --> L = 372 Zeichen einlesen. Next 372 Zeichen usw.

Gruß Dieter
Mitglied: muck2000
muck2000 21.04.2009 um 10:55:00 Uhr
Goto Top
Hallo Bastla,
hat super geklappt, nochmals vielen Dank!
Grüße
Muck2000
Mitglied: bastla
bastla 21.04.2009 um 14:29:01 Uhr
Goto Top
Hallo didi1954!
Warum hast Du nicht ...
Ich bevorzuge das Lesen "am Stück", und eine Datenmenge von 2,5 MB sollte in heutigen Zeiten hinsichtlich des Speichers kein Problem darstellen.

Wo siehst Du den Vorteil Deines Vorschlages (der natürlich funktionieren würde)?

Grüße
bastla
Mitglied: 76109
76109 21.04.2009 um 14:56:51 Uhr
Goto Top
Hallo bastla,

einen besonderen Vorteil sehe ich darin nicht unbedingt. War nur etwas verwundert, weil mir diese Funktion als einfachste in den Sinn kam.

Gruß Dieter