Leerzeile in Textdatei mit VBS erkennen

Hallo,

wie kann ich in VBS eine Leerzeile in einer Textdatei erkennen?

es soll folgendes passieren:

Der Code soll eine Leerzeile in der Textdatei finden und bei allen folgenden Zeilen ein Leerzeichen an den Anfang einfügen.

In der Textdatei ist nur eine Leerzeile enthalten.

Hier der Aufbau der Textdatei:
Nummer: 125688
Bearbeiter: xyz
Datum : 01.01.2001
Werkzeug: xxxx
Charge: xxxx

Länge: Istmaß 30.045
Dicke: Istmaß 18.298
usw

Vor Länge und Diocke usw. soll am Anfang ein Leerzeichen stehen.

Hallo,

wenn du die Datei zeilenweise durchgehst, kannst du ja abfragen, ob der Inhalt leer ist.
(z.B. trim(Zeile) = „“)

Wenn du in eine neue Datei reinschreibst, kannst du nun vor jede Ausgabe eine Variable setzen, die du leer initialisiert (z.B. blank = „“) und erst mit einem " " befüllst, sobald eine Leerzeile eingelesen wurde.

Hilft dir das schon weiter?

Danke für deine schnelle Antwort!

Ja es hat mir ein wenig weitergeholfen, jetzt muss ich nur noch das Programm dafür fertig schreiben :wink:

Hi,

hier ein Besipiel. Habs nicht getestet, sollte aber gehen.

Const ForReading = 1

Set ofs = CreateObject(„Scripting.FileSystemObject“)

Set input = ofs.OpenTextFile(„c:\textdatei.txt“, ForReading)
alles = input.ReadAll
input.Close

Set output = ofs.CreateTextFile(„c:\textdatei.txt“, vbTrue)

leergefunden = False
For Each line In Split(alles, vbCr)
If leergefunden Then
output.WriteLine " " & line
Else
output.WriteLine line
if line = „“ then leergefunden = True
End If
Next

output.Close

Vielen Dank, soweit vestehe ich auch das Programm(code)

Doch am schluss bei if line= …
bringt mir das programm einen fehler :frowning:
Syntaxfehler?

Habe den Code folgendermaßen in mein Programm geschrieben.

Jetzt macht das Programm allerdings überall eine Leerzeile hinein nach jeder Zeile.
Es sollte jedoch nur ein Leerzeichen an den Anfang jeder Zeie nach der einzigen Leerzeile in der Textdatei setzten.
Ich speicher zudem die Textdatei in einem anderen Ordner danach ab, die Orginaldatei soll so erhalten bleiben. Dieser Code verändert aber auch meine Orginaldatei.

Set ofs = CreateObject(„Scripting.FileSystemObject“)
Set input = ofs.OpenTextFile(„M:\Matt_16_VBS\Datapage\Faro_52285.txt“, ForReading)
alles = input.ReadAll
input.Close
Set output = ofs.CreateTextFile(„M:\Matt_16_VBS\Datapage\Faro_52285.txt“, vbTrue)
leergefunden = False
For Each line In Split(alles, vbCr)
If leergefunden then
output.WriteLine " " & line
Else
output.WriteLine line
end if
if line = „“ then
leergefunden = True
End If
Next
output.Close
'------ Abspeichern der Textdatei -----------

fso.CreateTextFile(„M:\Matt_16_VBS\Test\TEST.txt“, True).Write strgelesen

Hmmm, OK, das könnte an den Zeilenumbrüchen liegen. Die sind nicht immer vbcr, sondern manchmal auch vblf oder wahrscheinlich eher vbcrlf. Versuch den Split also erst mal mit vbcrlf, vielleicht klappts damit.

Danke!! An dem lag es :wink:

Außerdem hab ich bemerkt, dass ich die Datei ja zweimal abgespeichert hatte :wink:

Vielen Vielen Dank!

Hallo,

Das geht wie folgt:

Const ForReading = 1
Const ForWriting = 2

Set objFSO = CreateObject(„Scripting.FileSystemObject“)
Set objFile = objFSO.OpenTextFile(„d:\tempscript\list.txt“, ForReading)

strContents = objFile.ReadAll()
objFile.Close

strBlankline = vbCrLf & vbCrLf
strOldText = vbCrLf
strNewText = vbCrLf+" "

strPos= instr(1, strContents, strBlankline)
strNewContents=left(strContents,strpos+2)
strTempContents=Replace(mid(strContents,strpos+2,len(strcontents)-strpos-2), strOldText, strNewText)
strNewContents=strNewContents&strTempContents

Set objFile = objFSO.OpenTextFile(„d:\tempscript\newlist.txt“, ForWriting)
objFile.Write strNewContents
objFile.Close

Die Zieltextdatei muss existieren, kann aber einfach auch den selben Namen, wie die ursprüngliche haben und überschreibt die dann einfach.

Schöne Grüße
Flo

Danke für deine Hilfe!

Hab mein Problem auf eine andere Weise gelöst, hab aber deinen Weg auch ausprobiert und es hat auch einwandfrei funktioniert!

Vielen dank!

wie kann ich in VBS eine Leerzeile in einer Textdatei
erkennen?

Datei Zeilenweise lesen und dabei in eine neue Datei schreiben.
Bei der ersten Leerzeile, wird bei jedem Schreiben einer weiteren Zeile am Anfang der gelesenen Zeile ein Leerzeichen eingefügt.

Du kannst starten mit:
http://dieseyer.de/scr-html/cr2crlf.html
http://dieseyer.de/scr-html/dateizeilenweiselesenbea…
http://dieseyer.de/scr-html/arrayanzeigen-dateiinhal…

Abgesehen da von das die Frage schon was älter ist, habe ich nicht ganz verstanden was du machen möchtest. Du willst nach einem Leerzeichen suchen um dann ein weiteres Leerzeichen hinzuzufügen?

Wenn die Frage noch akut ist einfach noch mal kurz beschreiben was du möchtest dann finden wir eine Lösung