babylonstation5
Goto Top

Mit VBS bei einer Text Datei bei Leerzeilen an bestimmter Stelle den Wert aus oberer Zeile einfügen

Hallo Team,

habe hier ein Problem mit einer Textdatei.
Die Daten in der textdatei sind Blockweise getrennt (durch eine Leerzeile).
Ich benötige den wert aus einer bestimmten Stelle (immer gleich) der Zeile direkt oberhalb der Leerzeile (an der gleichen Stelle)
Eigentlich muss "nur" der Wert nach unten in die Leerzeile geklappt werden.

Beginne gerade mit VB Script und habe noch keine Lösung.

Mit Excel und Makros geht es, aber die Datei ist zu groß.
Habe hier eine Datei mit ca. 100.000 Zeilen.

Muster der Datei:

10 er345 DE
12 ztr345 DE

32 tu345 ZV
13 ur345 ZV

45 pq345 DE
08 rt345 DE


Und sollte so aussehen:

10 er345 DE
12 ztr345 DE
DE
32 tu345 ZV
13 ur345 ZV
ZV
45 pq345 DE
08 rt345 DE
ZV


Ich hoffe, Ihr habt da eine Lösung.
Danke im Voraus.

Content-Key: 215564

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

Printed on: April 25, 2024 at 09:04 o'clock

Mitglied: 106543
106543 Aug 29, 2013 at 12:15:19 (UTC)
Goto Top
Zitat von @babylonstation5:
Hallo Team,
hoi face-smile
Muster der Datei:

10 er345 DE
12 ztr345 DE

32 tu345 ZV
13 ur345 ZV

45 pq345 DE
08 rt345 DE


Und sollte so aussehen:

10 er345 DE
12 ztr345 DE
DE
32 tu345 ZV
13 ur345 ZV
ZV
45 pq345 DE
08 rt345 DE
ZV

sorry ich erkenne keine Logik in dem Schnipsel
sollte nicht nach
45 pq345 DE
08 rt345 DE

DE stehen oder vertuh ich mich grade :D

Grüße
Exze
Member: rubberman
rubberman Aug 29, 2013 at 19:24:26 (UTC)
Goto Top
Hallo babylonstation5, willkommen im Forum.

Probier mal folgendes Script:
Option Explicit

Const strSrc = "input.txt"  
Const strDest = "output.txt"  

Dim objFSO, objSrcFile, objDestFile, strLine, arrLine, boolEmpty
Const ForWriting = 2

boolEmpty = False
Set objFSO = CreateObject("Scripting.FileSystemObject")  
Set objSrcFile = objFSO.OpenTextFile(strSrc)
Set objDestFile = objFSO.OpenTextFile(strDest, ForWriting, True)

While Not objSrcFile.AtEndOfStream
  strLine = objSrcFile.ReadLine
  If strLine = "" Then  
    If IsArray(arrLine) And boolEmpty = False Then strLine = arrLine(UBound(arrLine))
    boolEmpty = True
  Else
    arrLine = Split(strLine, " ")  
    boolEmpty = False
  End If
  objDestFile.WriteLine strLine
Wend

If strLine <> arrLine(UBound(arrLine)) And boolEmpty = False Then objDestFile.WriteLine arrLine(UBound(arrLine))

objSrcFile.Close
objDestFile.Close
Die Dateinamen solltest du natürlich anpassen face-wink

Grüße
rubberman
Member: babylonstation5
babylonstation5 Aug 30, 2013 at 07:49:10 (UTC)
Goto Top
Stimmt natürlich. Mein Fehler. Sorry