Textdatei mit VBScript bearbeiten für Anfänger
Hallo,
ich möchte mittels eines *.vbs Script mehrere Textdateien auf unterschiedliche Art bearbeiten aber leider habe ich recht wenig Programmierkenntnisse, bin aber sehr wissbegierig.
Die erste Datei hat folgenden Aufbau (Spalten sind immer mit ; getrennt):
5517;17,012345;2010-03-03 07:45:03.980;Text;242;2076;;;;56.88;;nnn; usw.
Wie kann ich einzelne Spalten löschen?
Ich möchte z.B. Angeben lösche die 1.+5.+9. Spalte usw..
In der 2. Spalte steht eine Zahl die ich in zwei Spalten auftrennen muss, Zahl links vom Komma und rechts davon in jeweils eine neue Spalte
Dann sollte noch die 3. Spalte mit dem Datum und Uhrzeit in 2 Spalten aufgetrennt werden nach dem Format TT.MM.JJ und die Uhrzeit in hh:mm:ss
Weiterhin muss dann noch in allen Zahlenwerten der . durch ein Komma ersetzt werden
Ergebnis: 03.03.2010;07:45:03;17;012345;Text;242;2076;56,88
Die andere Datei ist ähnlich aufgebaut und hier sollen jeweils von bestimmten Spalten die Mittelwerte bestimmt werden, Ergebnis in neue *.txt oder direkt in die Datei (alte Zeilen löschen)
Text_1;3;076720;38.00;14.38;0;0;53;11.83;12.10;5.06;5.07
Text_2;3;076721;37.00;24.38;0;0;53;11.11;12.10;5.06;5.17
Text_3;3;076722;38.00;14.38;0;0;53;11.83;12.10;5.06;5.07
Text_1;3;076720;28.00;22.38;0;0;33;12.83;13.10;6.06;7.07
Text_2;3;076721;37.00;24.38;0;0;33;19.11;14.10;6.06;9.17
Text_3;3;076722;40.00;55.38;0;0;57;17.83;15.10;8.06;8.07
Hier sollte von allen Zeilen in denen in Spalte 3 der gleiche Inhalt steht jeweils der Mittelwert berechnet werden.
Die Datei hat mehrere tausend Zeilen.
Ergebnis:
Text_1;3;76720;33;18.38;0;0;43;12.33;12.6;5.56;6.07
Text_2;3;76721;37;24.38;0;0;43;15.11;13.1;5.56;7.17
Text_3;3;76722;39;34.88;0;0;55;14.83;13.6;6.56;6.57
Ist das "relativ" einfach realisierbar?
Kann mir bitte jemand einige Tipps bzw. Codebeispiele geben?
Vielen Dank
Steffen
ich möchte mittels eines *.vbs Script mehrere Textdateien auf unterschiedliche Art bearbeiten aber leider habe ich recht wenig Programmierkenntnisse, bin aber sehr wissbegierig.
Die erste Datei hat folgenden Aufbau (Spalten sind immer mit ; getrennt):
5517;17,012345;2010-03-03 07:45:03.980;Text;242;2076;;;;56.88;;nnn; usw.
Wie kann ich einzelne Spalten löschen?
Ich möchte z.B. Angeben lösche die 1.+5.+9. Spalte usw..
In der 2. Spalte steht eine Zahl die ich in zwei Spalten auftrennen muss, Zahl links vom Komma und rechts davon in jeweils eine neue Spalte
Dann sollte noch die 3. Spalte mit dem Datum und Uhrzeit in 2 Spalten aufgetrennt werden nach dem Format TT.MM.JJ und die Uhrzeit in hh:mm:ss
Weiterhin muss dann noch in allen Zahlenwerten der . durch ein Komma ersetzt werden
Ergebnis: 03.03.2010;07:45:03;17;012345;Text;242;2076;56,88
Die andere Datei ist ähnlich aufgebaut und hier sollen jeweils von bestimmten Spalten die Mittelwerte bestimmt werden, Ergebnis in neue *.txt oder direkt in die Datei (alte Zeilen löschen)
Text_1;3;076720;38.00;14.38;0;0;53;11.83;12.10;5.06;5.07
Text_2;3;076721;37.00;24.38;0;0;53;11.11;12.10;5.06;5.17
Text_3;3;076722;38.00;14.38;0;0;53;11.83;12.10;5.06;5.07
Text_1;3;076720;28.00;22.38;0;0;33;12.83;13.10;6.06;7.07
Text_2;3;076721;37.00;24.38;0;0;33;19.11;14.10;6.06;9.17
Text_3;3;076722;40.00;55.38;0;0;57;17.83;15.10;8.06;8.07
Hier sollte von allen Zeilen in denen in Spalte 3 der gleiche Inhalt steht jeweils der Mittelwert berechnet werden.
Die Datei hat mehrere tausend Zeilen.
Ergebnis:
Text_1;3;76720;33;18.38;0;0;43;12.33;12.6;5.56;6.07
Text_2;3;76721;37;24.38;0;0;43;15.11;13.1;5.56;7.17
Text_3;3;76722;39;34.88;0;0;55;14.83;13.6;6.56;6.57
Ist das "relativ" einfach realisierbar?
Kann mir bitte jemand einige Tipps bzw. Codebeispiele geben?
Vielen Dank
Steffen
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 137512
Url: https://administrator.de/forum/textdatei-mit-vbscript-bearbeiten-fuer-anfaenger-137512.html
Ausgedruckt am: 25.04.2025 um 08:04 Uhr
8 Kommentare
Neuester Kommentar

Hallo qwaxxy!
Das sollte Dir für's erste mal weiterhelfen (*.vbs):
Beachten, dass die Arrays bei 0 anfangen zu zählen z.B Array 0-7 = Spalte 1-8
Gruß Dieter
[edit] Zeile 23 geändert, falls auch Punkt zum ersetzen [/edit]
Das sollte Dir für's erste mal weiterhelfen (*.vbs):
Const In02Zahl = 1
Const In03Date = 2
Const In04Text = 3
Const In05Zahl = 4
Const In06Zahl = 5
Const In10Zahl = 9
Dim Csv1, Csv2(7), Zahl, Wert1, Wert2
Text = "5517;17,012345;2010-03-03 07:45:03.980;Text;242;2076;;;;56.88;;nnn"
Csv1 = Split(Text, ";")
Zahl = Split(Csv1(In02Zahl), ",")
Wert1 = Zahl(0)
If UBound(Zahl) = 1 Then Wert2 = Zahl(1) Else Wert2 = 0
Csv2(0) = FormatDateTime(Split(Csv1(In03Date), ".")(0), vbShortDate)
Csv2(1) = FormatDateTime(Split(Csv1(In03Date), ".")(0), vbLongTime)
Csv2(2) = Replace(Wert1, ".", ",")
Csv2(3) = Replace(Wert2, ".", ",")
Csv2(4) = Csv1(In04Text)
Csv2(5) = Replace(Csv1(In05Zahl), ".", ",")
Csv2(6) = Replace(Csv1(In06Zahl), ".", ",")
Csv2(7) = Replace(Csv1(In10Zahl), ".", ",")
MsgBox Join(Csv2, ";")
Gruß Dieter
[edit] Zeile 23 geändert, falls auch Punkt zum ersetzen [/edit]
Hallo qwaxxy und willkommen im Forum!
Für die erste Datei etwa so:
Anmerkung: Es wird vorausgesetzt (und daher nicht geprüft), dass der Satzaufbau korrekt ist bzw Deinem Beispiel entspricht - und daher zB in Feld 2 tatsächlich zwei durch Komma getrennte Zahlen vorhanden sind) ...
Grüße
bastla
[Edit] @76109: Sehr effizient
; ich dachte, wir sollten einem neuen Mitglied etwas mehr bieten
... [/Edit]
Für die erste Datei etwa so:
Datei = "Z:\Datei1.txt"
Delim = ";" 'Feldtrennzeichen
Set fso = CreateObject("Scripting.FileSystemObject")
'Gesamten Dateiinhalt einlesen und zeilenweise aufgeteilt im Array T() ablegen
T = Split(fso.OpenTextFile(Datei).ReadAll, vbCrLf)
Neu = "" 'Variable für berarbeiteten Dateiinhalt vorbereiten
'In einer Schleife alle Zeilen durchgehen
For Each Z In T
'Zeile anhand des Trennzeichens aufteilen und im Array S() ablegen
S = Split(Z, Delim)
'Variable für Ausgabezeile löschen ...
Aus = ""
'... und darin in der gewünschten Reihenfolge die neue Zeile zusammensetzen
'Datum und Zeit trennen (Leerzeichen ist als Trennzeichen Default)
' Datumsschreibweise umwandeln und Zeitangabe auf die ersten 8 Stellen reduzieren
Datum = Split(S(2))(0) 'erster Teil des Feldes 3 (Index ist 2, da nullbasiert)
D = Split(Datum, "-") 'Array für Datumsbestandteile
Datum = D(2) & "." & D(1) & "." & D(0) 'Datum neu zusammensetzen
Zeit = Left(Split(S(2))(1), 8) 'erste 8 Stellen des zweiten Teiles des Feldes 3
'Datum und Zeit (getrennt) an den Beginn der Zeile stellen
Aus = Datum & Delim & Zeit
'Zahl aus Feld 2 anhand des enthaltenen Kommas aufteilen und der Zeile hinzufügen
Aus = Aus & Delim & _
Split(S(1), ",")(0) & Delim & _
Split(S(1), ",")(1)
'Restliche benötigte Felder hinzufügen (und, bei Bedarf, Punkt durch Komma ersetzen)
Aus = Aus & Delim & S(3) 'Text
' - je nach Anzahl und Art der Felder könnten auch Schleifen verwendet werden, zB
For i = 5 To 7
Aus = Aus & Delim & Replace(S(i), ".", ",") 'jeweils Zahl
Next
Aus = Aus & Delim & Replace(S(9), ".", ",") 'Zahl
Aus = Aus & Delim & Replace(S(10), ".", ",") 'Zahl
Aus = Aus & Delim & S(11) 'Text
' ...
'Fertige Ausgabezeile dem neuen Dateiinhalt nach einer Zeilenschaltung hinzufügen
Neu = Neu & vbCrLf & Aus
Next
'Neuen Dateiinhalt in alte Datei schreiben (diese dazu neu erstellen)
'(Da sich am Beginn von "Neu" eine Zeilenschaltung, bestehend aus den 2 Zeichen CR und LF, befindet,
'Inhalt erst ab dem dritten Zeichen verwenden)
fso.CreateTextFile(Datei).Write Mid(Neu, 3)
Grüße
bastla
[Edit] @76109: Sehr effizient

Hallo bastla!
Wow, 4 Sekunden zu langsam
Gruß Dieter
PS Und gleich wieder das volle Programm
Wow, 4 Sekunden zu langsam
Gruß Dieter
PS Und gleich wieder das volle Programm