Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Textdatei mit VBScript bearbeiten für Anfänger

Mitglied: qwaxxy

qwaxxy (Level 1) - Jetzt verbinden

05.03.2010, aktualisiert 11:49 Uhr, 10784 Aufrufe, 8 Kommentare

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
Mitglied: Snowman25
05.03.2010 um 12:18 Uhr
Öffne es in Excel oder einem anderen Tabellenkalkulationsprogramm als *.csv-Datei (muss jedes dieser programme lesen könnnen) und schreib dir da ein entsprechendes Macro mit z.B. VBA (Visual basic for Applications)

Gruß
Snow
Bitte warten ..
Mitglied: qwaxxy
05.03.2010 um 16:46 Uhr
Hallo Snow,

mit Excel ist das kein Problem aber auf dem Rechner ist das nicht vorhanden, deshalb wollte ich es mit Windows Bordmitteln erledigen.

Mal schauen wie ich es gelöst bekomme.
Bitte warten ..
Mitglied: Snowman25
05.03.2010 um 16:50 Uhr
Dann schau mal hier: CSV to Array
Danach kannst du ja mit dem Array machen, was du willst.

Gruß
Snow
Bitte warten ..
Mitglied: 76109
05.03.2010 um 17:26 Uhr
Hallo qwaxxy!

Das sollte Dir für's erste mal weiterhelfen (*.vbs):
01.
Const In02Zahl = 1 
02.
Const In03Date = 2 
03.
Const In04Text = 3 
04.
Const In05Zahl = 4 
05.
Const In06Zahl = 5 
06.
Const In10Zahl = 9 
07.
 
08.
Dim Csv1, Csv2(7), Zahl, Wert1, Wert2 
09.
 
10.
Text = "5517;17,012345;2010-03-03 07:45:03.980;Text;242;2076;;;;56.88;;nnn" 
11.
     
12.
Csv1 = Split(Text, ";") 
13.
     
14.
Zahl = Split(Csv1(In02Zahl), ",") 
15.
     
16.
Wert1 = Zahl(0) 
17.
     
18.
If UBound(Zahl) = 1 Then Wert2 = Zahl(1) Else Wert2 = 0 
19.
     
20.
Csv2(0) = FormatDateTime(Split(Csv1(In03Date), ".")(0), vbShortDate) 
21.
Csv2(1) = FormatDateTime(Split(Csv1(In03Date), ".")(0), vbLongTime) 
22.
Csv2(2) = Replace(Wert1, ".", ",") 
23.
Csv2(3) = Replace(Wert2, ".", ",") 
24.
Csv2(4) = Csv1(In04Text) 
25.
Csv2(5) = Replace(Csv1(In05Zahl), ".", ",") 
26.
Csv2(6) = Replace(Csv1(In06Zahl), ".", ",") 
27.
Csv2(7) = Replace(Csv1(In10Zahl), ".", ",") 
28.
     
29.
MsgBox Join(Csv2, ";")
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]
Bitte warten ..
Mitglied: bastla
05.03.2010 um 17:26 Uhr
Hallo qwaxxy und willkommen im Forum!

Für die erste Datei etwa so:
01.
Datei = "Z:\Datei1.txt" 
02.
Delim = ";" 'Feldtrennzeichen 
03.
 
04.
Set fso = CreateObject("Scripting.FileSystemObject") 
05.
 
06.
'Gesamten Dateiinhalt einlesen und zeilenweise aufgeteilt im Array T() ablegen 
07.
T = Split(fso.OpenTextFile(Datei).ReadAll, vbCrLf) 
08.
 
09.
Neu = "" 'Variable für berarbeiteten Dateiinhalt vorbereiten 
10.
'In einer Schleife alle Zeilen durchgehen 
11.
For Each Z In T 
12.
    'Zeile anhand des Trennzeichens aufteilen und im Array S() ablegen 
13.
    S = Split(Z, Delim) 
14.
    'Variable für Ausgabezeile löschen ... 
15.
    Aus = "" 
16.
    '... und darin in der gewünschten Reihenfolge die neue Zeile zusammensetzen 
17.
     
18.
    'Datum und Zeit trennen (Leerzeichen ist als Trennzeichen Default) 
19.
    '     Datumsschreibweise umwandeln und Zeitangabe auf die ersten 8 Stellen reduzieren 
20.
    Datum = Split(S(2))(0) 'erster Teil des Feldes 3 (Index ist 2, da nullbasiert) 
21.
    D = Split(Datum, "-") 'Array für Datumsbestandteile 
22.
    Datum = D(2) & "." & D(1) & "." & D(0) 'Datum neu zusammensetzen 
23.
     
24.
    Zeit = Left(Split(S(2))(1), 8) 'erste 8 Stellen des zweiten Teiles des Feldes 3 
25.
    'Datum und Zeit (getrennt) an den Beginn der Zeile stellen 
26.
    Aus = Datum & Delim & Zeit 
27.
     
28.
    'Zahl aus Feld 2 anhand des enthaltenen Kommas aufteilen und der Zeile hinzufügen 
29.
    Aus = Aus & Delim & _ 
30.
        Split(S(1), ",")(0) & Delim & _ 
31.
        Split(S(1), ",")(1) 
32.
 
33.
    'Restliche benötigte Felder hinzufügen (und, bei Bedarf, Punkt durch Komma ersetzen) 
34.
    Aus = Aus & Delim & S(3) 'Text 
35.
    '    - je nach Anzahl und Art der Felder könnten auch Schleifen verwendet werden, zB 
36.
    For i = 5 To 7 
37.
        Aus = Aus & Delim & Replace(S(i), ".", ",") 'jeweils Zahl 
38.
    Next 
39.
    Aus = Aus & Delim & Replace(S(9), ".", ",") 'Zahl 
40.
    Aus = Aus & Delim & Replace(S(10), ".", ",") 'Zahl 
41.
    Aus = Aus & Delim & S(11) 'Text 
42.
    ' ... 
43.
	 
44.
    'Fertige Ausgabezeile dem neuen Dateiinhalt nach einer Zeilenschaltung hinzufügen 
45.
    Neu = Neu & vbCrLf & Aus 
46.
Next 
47.
 
48.
'Neuen Dateiinhalt in alte Datei schreiben (diese dazu neu erstellen) 
49.
'(Da sich am Beginn von "Neu" eine Zeilenschaltung, bestehend aus den 2 Zeichen CR und LF, befindet, 
50.
'Inhalt erst ab dem dritten Zeichen verwenden) 
51.
fso.CreateTextFile(Datei).Write Mid(Neu, 3)
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]
Bitte warten ..
Mitglied: 76109
05.03.2010 um 17:30 Uhr
Hallo bastla!

Wow, 4 Sekunden zu langsam

Gruß Dieter

PS Und gleich wieder das volle Programm
Bitte warten ..
Mitglied: bastla
05.03.2010 um 17:32 Uhr
@76109
[OT]
Wow, 4 Sekunden zu langsam
Sowohl mit den 4 Sekunden, als auch mit der Tatsache, dass Du schneller warst, kann ich gut leben ...
[/OT]

Grüße
bastla
Bitte warten ..
Mitglied: 76109
05.03.2010 um 17:37 Uhr
@bastla
[OT]
Zitat von bastla:
Sowohl mit den 4 Sekunden, als auch mit der Tatsache, dass Du schneller warst, kann ich gut leben ...
Daran hege ich keine Zweifel
[/OT]

Gruß Dieter
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Powershell Textdatei Inhalt am Anfang einfügen

gelöst Frage von Timo0oBatch & Shell3 Kommentare

Wie kann ich einen Text in eine Textdatei mit Inhalt am Anfang einfügen? So wie ich es hier habe ...

Entwicklung

Textdatei zyklisch und automatisiert bearbeiten und versenden

Frage von HoschiDEntwicklung5 Kommentare

Hallo Administratoren! :-) Ich stehe vor einem (für mich) noch großen Problem, bin aber guter Dinge, dass mir hier ...

Visual Studio

Textdatei einlesen und per VBScript umformatieren

gelöst Frage von MaiwaldVisual Studio12 Kommentare

Hallo Forummitglieder, Ich bräuchte einen Ansatz für ein VB Script IST: Ich habe eine Datei, die folgenden Inhalt hat ...

Weiterbildung

Wo soll ich anfangen?

gelöst Frage von OVONELWeiterbildung7 Kommentare

Hallo alle zusammen! Im September schließe ich meine Ausbildung zum Fachinformatiker - Systemintegration meine schulischen Noten sind soweit in ...

Neue Wissensbeiträge
Humor (lol)

WhatsApp-Nachrichten endlich auch per Bluetooth versendbar

Information von BassFishFox vor 9 StundenHumor (lol)2 Kommentare

Genau darauf habe ich gewartet! ;-) Der beliebte Messaging-Dienst WhatsApp erhält eine praktische neue Funktion: Ab dem nächsten Update ...

Google Android

Googles "Android Enterprise Recommended" für Unternehmen

Information von kgborn vor 22 StundenGoogle Android3 Kommentare

Hier eine Information, die für Administratoren und Verantwortliche in Unternehmen, die für die Beschaffung und das Rollout von Android-Geräten ...

Sicherheit

Intel gibt neue Spectre V2-Microcode-Updates frei (20.02.2018)

Information von kgborn vor 22 StundenSicherheit

Intel hat zum 20. Februar 2018 weitere Microcode-Updates für OEMs freigegeben, um Systeme mit neueren Prozessoren gegen die Spectre ...

Microsoft
ARD-Doku - Das Microsoft Dilemma
Tipp von Knorkator vor 1 TagMicrosoft3 Kommentare

Hallo zusammen, vor einigen Tagen lief in der ARD u.a. Reportage. Das Youtube Video dazu dürfte länger verfügbar sein. ...

Heiß diskutierte Inhalte
Windows Server
AD DS findet Domäne nicht, behebbar?
Frage von schapitzWindows Server45 Kommentare

Guten Tag, ich habe bei einem Kunden ein Problem mit den AD DS. Umgebung ist folgende: Windows Server 2016 ...

Router & Routing
LANCOM VPN CLIENT einrichten
Frage von Finchen961988Router & Routing27 Kommentare

Hallo, ich habe ein Problem und hoffe ihr könnt mir helfen, wir haben einen Kunden der hat einen Speedport ...

Router & Routing
ISC DHCP 2 Subnetze
gelöst Frage von janosch12Router & Routing19 Kommentare

Hallo, ich betreibe bei mir im Netzwerk einen ISC DHCP Server auf Debian, der DHCP verwaltet aktuell ein /24 ...

Server-Hardware
Welche Rolle spielt Design bei Enterprise IT Hardware?
Frage von ApolloXServer-Hardware16 Kommentare

Ich arbeite für einen internationalen Elektronikhersteller in der Forschung und meine Aufgabe ist es, Feedback von Nutzern in Hinsicht ...