coldzero89
Goto Top

Per Batch einer CSV-Datei Zeilen verpassen

War vor Zeiten schonmal hier, nur irgendwie ist mein Account gelöscht. Daher neuanmeldung

Moinsen =)

Vorhanden ist eine CSV Datei deren Inhalt so hintereinander weggeschrieben wurde und durch ; getrennt ist.
Öffnen mit Excel sorgt nur dafür das ich 2 Zeilen habe, eine Überschrift - Umbruch - Inhalt.
Der Inhalt ist SO durchgeschrieben und durch ; eben getrennt.
Einziges EINDEUTIGES Erkennungszeichen zum Trennen der Zeile in mehrere Zeilen ist die Zeit. Die Informationen der Anlage, die abgefragt wurde, wird Stündlich gemacht. Die Uhrzeit steht mit 00:XX:00 drin.

Über Excel Boardmittel ist das ganze Komplizierter als einer Schildkröte fliegen beizubrnigen, zumindestens das was ich gelesen habe.

Daher mein einfall eines Batchscriptes das die Datei "einließt" und sobald es auf 00:XX:00 Trifft nen Zeilenumbruch macht und dann der Zähler der Zeit +1 geht usw.

Ich habe bisher keinerlei einfälle wie ich das vernünftig in Google suche, noch wie ich bei dem File anfange.

Daher die frage ob eventuell jemand Ansätze hat dieses umzusetzen oder eventuell per Zufall selbst sowas gebastelt hat, an dem ich nur anpassen muss.

Ausgabe sollte dann im endeffekt halt in ner neuen Datei beendet werden, dann in Excel öffnen und nur sagen: Trennzeichen sind ; und ab gehts.

Vielleicht hab ich glück, ansätze würden mir aber auch reichen, dann muss ich halt basteln ;)

Sollten noch Informationen fehlen, fragt einfach =)

Schönen abend noch.

Da Cold.

Content-ID: 186795

Url: https://administrator.de/forum/per-batch-einer-csv-datei-zeilen-verpassen-186795.html

Ausgedruckt am: 22.12.2024 um 14:12 Uhr

bastla
bastla 20.06.2012 um 17:47:06 Uhr
Goto Top
Hallo ColdZero89, welcome back!

Als VBScript mit ein wenig RegEx etwa so:
Ein = "D:\Defekt.csv"  
Aus = "D:\Repariert.csv"  

Set fso = CreateObject("Scripting.FileSystemObject")  
T = fso.OpenTextFile(Ein).ReadAll
Set rE = New RegExp
rE.Global = True
rE.Pattern = "(00:[0-2]\d:00)"  

fso.CreateTextFile(Aus).Write rE.Replace(T, vbNewLine & "$1")  
Grüße
bastla
NetWolf
NetWolf 20.06.2012 aktualisiert um 17:48:33 Uhr
Goto Top
Moin Moin,

ok, du hast eine CSV-Datei die du in Excel nutzen willst. Warum fragst du da nicht im Excel-Brett nach einer Lösung?

Einen String mit VBA zu zerlegen ist einfach. Lediglich folgenden Teil-Satz habe ich nicht verstanden:
und dann der Zähler der Zeit +1 geht usw.
Wo kommt der Zähler her? und wohin geht er?

btw wenn die Datei aus einer Maschine kommt, wird man dort auch einstellen können, dass an irgendeiner Stelle auch ein sinnvoller Zeilenumbruch erfolgen soll.
Oder sind es Paketdaten einer bestimmten Länge? So dass man die Dateninhalte anhand der Informationslänge auswerten kann? (was imho mehr Sinn machen würde, als nach der Uhrzeit zu suchen)

ym2c

/Edit
ups, bastla war mal wieder schneller face-smile
/Edit

Grüße aus Rostock
Wolfgang
(Netwolf)
ColdZero89
ColdZero89 20.06.2012 aktualisiert um 20:39:19 Uhr
Goto Top
Moin Bastla und NetWolf x) hach wie schön :D ihr beiden weider! :D Und der Netwolf der ausm Norden kam! XD

Ich hab gedacht dass das Script die Datei durchguckt bis es 00:01:00 findet und dann zeilenumbruch die Zeit dann +1 geht also auf 00:02:00 bis er diese Zahlenfolge findet, dann 00:03:00 usw und dann immer nen zeilenumbruch x)

So VBScript ok x) aber ich habe von VB so keinerlei ahnung wo nutzt man das? direkt in Excel? Daher sitz ich hier grad mit ähm Fragezeichen aufn augen und keinen Dollarzeichen xD

Und bastla kurze frage ob du mir erklären könntest was da steht - dann kann ich das so auch meinem chef vorlegen und erklären x)

Und auf Excel Brett kam ich gar net da ich zu umständlich denke xD ich hab direkt an nen schönes Batch gedacht

Und danke vorab Jungs :D

Grüße aus Hamburg
Kevin ^^
bastla
bastla 20.06.2012 aktualisiert um 21:07:59 Uhr
Goto Top
Hallo ColdZero89!
wo nutzt man das? direkt in Excel?
Die gepostete Variante ist Stand-alone als VBScript (Dateityp ".vbs") zu nutzen - wenn Du die Zeile 6 auf
Set rE = CreateObject("VBScript.RegExp")
änderst, geht's auch mit VBA ...
ob du mir erklären könntest was da steht
In der Kurzfassung:
In Zeile 5 wird der gesamte Dateiinhalt in einen String ("T") eingelesen.

Die Zeilen 6 bis 8 legen fest, dass per "RegEx" nach allen Teilstrings, die dem Muster
00:<Ziffer von 0 bis 2><beliebige Ziffer>:00"
entsprechen, gesucht werden soll.

In Zeile 10 schließlich wird diese Vorgabe genutzt, um die Suche mit einem Ersetzen zu kombinieren und das Ergebnis in die Zieldatei zu schreiben, wobei einfach jeder dem Suchmuster entsprechende Teilstring durch
<Zeilenschaltung><gefundener Teilstring>
(letzterer repräsentiert durch $1) ersetzt wird - oder einfacher: vor jeder Kombination "00:##:00" wird eine Zeilenschaltung eingefügt.

Grüße
bastla

P.S.: Falls Du gesteigerten Wert auf einen Batch legen solltest face-wink:
@echo off & setlocal
set "Ein=D:\Defekt.csv"  
set "Aus=D:\Repariert.csv"  

set "R=%temp%\RepariereCSV.vbs"  
 >"%R%" echo Set fso=CreateObject("Scripting.FileSystemObject"):T=fso.OpenTextFile("%Ein%").ReadAll  
>>"%R%" echo Set rE=New RegExp:rE.Global=True:rE.Pattern="(00:[0-2]\d:00)"  
>>"%R%" echo fso.CreateTextFile("%Aus%").Write rE.Replace(T,vbNewLine ^& "$1")  

cscript //nologo "%R%" 
ColdZero89
ColdZero89 21.06.2012 aktualisiert um 09:17:40 Uhr
Goto Top
Guten Morgen :D

bastla du bist Verrückt :D aber cool danke. Werd das heute Mittag mal ausprobieren. Wenn das klappt meinem Chef vorlegen und der ist Glücklich und ich hab + Punkte gesammelt.

Und danke für die Erklärung so ist das gleich verständlicher für nen "noob" in VBS.

Gebe dann Rückmeldung ob das alles schick geklappt hat!

P.S.: Gibt es ne Möglichkeit der neuen Datei dann noch mitzuteilen: NAME_DATUMvonHeute?

Unter Batch wüsst ich das, unter VB keinerlei Ahnung.
Grund: Zur Archivierung eventuell noch sehr Vorteilhaft.

Danke

Gruß Zero
ColdZero89
ColdZero89 21.06.2012 aktualisiert um 11:42:50 Uhr
Goto Top
Sooooooo

Getestet und für Gut Empfunden :D Ich danke Vielmals.

Merkte aber das in 00:xx:00 die X die Minuten sind, habe somit dein Konstrukt erweitert.

Die Zeile
rE.Pattern = "(00:[0-2]\d:00)"  
Sieht nun so aus
rE.Pattern = "([0-2]\d:[0-5]\d:00)"  

Einziges Problem was vorher NICHT sichtbar war. Es steht vor dem XX:XX:00 noch immer ein Datum, das nun am Ende der Zeile steht. An sich kein Problem, nur die per Hand Bearbeitung nervt dann, da man die "Überschriften"-Zeile erstmal Händisch verschieben muss, damit die Zuordnung der Zahlen zu den richtigen "Überschriften" wieder stimmt.

Ne Möglichkeit zu sagen nach jedem Datum macht der einen Cut ist aus meiner sicht nicht rentabel da die Daten immer 7 Tage beinhalten.
Gäbe es dort eine Möglichkeit zu sagen, der String "Datum" wird entfernt. Da das Datum am ende steht, reicht das dann vollkommen aus.

Aber bisher, ich glaube ich muss mich mal Privat mit VBS beschäftigen. Da ist mit wenig, viel Möglich.

PS:
Es handelt sich um Datein aus 2 Anlagen. Die CSV von Anlage 1 ist Sauber getrennt, die aus Anlage 2 nicht.

Unter Batch gibt es die Möglichkeit einen "Variablen" Dateinamen zu benennen *xxx*.
Gibt es bei VBS auch so eine Möglichkeit?
Dateiname Lautet: "Minutenmittelwerte SB PVU2 2012_XX_XX.csv"
Ich hatte nun schon Probiert zu sagen

Ein = "D:\Minutenmittelwerte*PVU2*.csv"  

Funktioniert nur nicht.

Und für die Ausgabe in ein Datum

Aus = "D:\Repariert_%Date%.csv"  

Google gleich mal ein bissl, aber für Zukünftige die diesen Beitrag lesen, sicherlich nicht uninteressant, wenn ich was finde Poste ich das auch direkt.

Grüße der Zero
ColdZero89
ColdZero89 21.06.2012 aktualisiert um 12:09:16 Uhr
Goto Top
Ok Date() ist, wenn ich mich nicht irre, der gesuchte Befehl.

WIE bekomm ich den nun den String "D:\Repariert.csv" rein? Trennen kann ich den String ja nicht einfach.

Aus = "D:\Repariert_"%Date%".csv"  

da Meckert der :D

PS: Kam nun auf die Idee Date() in eine Variable (Datum) zu packen. Nur nun bin ich am selben Punkt xD wie bekomm ich die Variable in den String? xD

PS2: Problem mit dem Datum gelöst! :D

Befehl sieht nun wie folgt aus - und ja ich hätte auch direkt drauf kommen können.

Aus = "D:\Repariert_"&Date()&".csv"  

1a Ausgabe mit dem Aktuellem Datum von Heute!
Nun such ich noch wie ich das Datum umdrehe. Also nicht 21.06.2012 sondern 2012.06.21.


Gruß Zero
ColdZero89
ColdZero89 21.06.2012 aktualisiert um 13:26:36 Uhr
Goto Top
So Plan umgeworfen.

Plan sieht nun wie folgt aus:

per VBScript die Zeilenumbrücke einbauen
Batch Datei aus VBScript öffnen (Hoffe das is richtig)

Set WSHShell = WScript.CreateObject("WScript.Shell")  
 
WSHShell.run "test.bat"  

Per Batch die Datein verschieben und dann in dem Archivordner die Datein (Anlage 1 und Anlage 2) Umbennenen in DATUM_Anlage1.csv & DATUM_Anlage2.csv

Was mich bei der Datei aus Anlage 2 immernoch stört ist halt wie ich den String "Datum" entfernen kann, bin bisher beim Googleln auch nicht drauf gestoßen wie das sauber zu realisieren ist.

Gruß Coldi
ColdZero89
ColdZero89 21.06.2012 aktualisiert um 13:46:37 Uhr
Goto Top
So Alles soweit sehr zufriedenstellend fehlt nur noch das mit dem Datum.

Folgendermaßen sehen meine beiden Datein nun aus:

.BAT-Datei

@echo off

set mydate=%date:~-4%%date:~-7,2%%date:~-10,2%

move .\Minutenmittelwerte*PVU2*.csv .\PVU2.csv

cscript .\Zeilenumbruch.vbs

move .\PVU2_new.csv .\Archiv\%mydate%_PUV2.csv

move .\Minutenmittelwerte*PVU1*.csv .\Archiv\%mydate%_PUV1.csv

del .\PVU2.csv

VBS Datei (Danke nochmal an bastla)

Ein = "C:\PFAD\PVU2.csv"  
Aus = "C:\PFAD\PVU2_new.csv"  

Set fso = CreateObject("Scripting.FileSystemObject")  
T = fso.OpenTextFile(Ein).ReadAll
Set rE = New RegExp
rE.Global = True
rE.Pattern = "([0-2]\d:[0-5]\d:00)"  

fso.CreateTextFile(Aus).Write rE.Replace(T, vbNewLine & "$1")  

Also die Daten liegen in einem Ordner, die PVU2 Datei wird umbenannt damit es einheitlich für das VBScript ist. Nachdem das VBScript durch mit der Datei ist, bearbeitet es die BATCH weiter und verschiebt PVU1 und PVU2 in einen Ordner.

Gruß Zero
bastla
bastla 21.06.2012 aktualisiert um 16:31:05 Uhr
Goto Top
Hallo ColdZero89!

Wenn schon Batch, dann aber doch besser gleich nur Batch (ungetestet):
@echo off & setlocal
set "mydate=%date:~-4%%date:~-7,2%%date:~-10,2%"  

move "Minutenmittelwerte*PVU2*.csv" "%Ein%"  

set "Ein=PVU2.csv"  
set "Aus=PVU2_new.csv"  
set "R=%temp%\RepariereCSV.vbs"  
 >"%R%" echo Set fso=CreateObject("Scripting.FileSystemObject"):T=fso.OpenTextFile("%Ein%").ReadAll  
>>"%R%" echo Set rE=New RegExp:rE.Global=True:rE.Pattern="([0-2]\d:[0-5]\d:00)"  
>>"%R%" echo fso.CreateTextFile("%Aus%").Write rE.Replace(T,vbNewLine ^& "$1")  
cscript //nologo "%R%" 

move "%Aus%" "Archiv\%mydate%_PUV2.csv"  

move "Minutenmittelwerte*PVU1*.csv" "Archiv\%mydate%_PUV1.csv"  

del "%Ein%"  
Anmerkung: Tausche total unnötiges ".\" gegen (nur bei Dateinamen/Pfaden ohne Leerzeichen nicht erforderliche) Anführungszeichen ... face-wink
Hinsichtlich des Suchmusters hast Du ja erfreulicher Weise meinen Fehler face-sad mit der Einschränkung bei den Minuten schon behoben.

Was das störende Datum anlangt: Wenn Du den "Pattern"-Wert entsprechend anpasst, kannst Du das verschwinden lassen:
>>"%R%" echo Set rE=New RegExp:rE.Global=True:rE.Pattern="[0-3]\d.[0-1]\d.20[1-9]\d ([0-2]\d:[0-5]\d:00)"
- es wird so nach einem String entsprechend dem Muster
TT.MM.JJJJ hh:mm:ss
gesucht (und kann daher nur für Anlage 2 verwendet werden), wobei die Jahreszahl allerdings auf Werte im Bereich 2010 bis 2099 beschränkt ist - vor dem Jahrhundertwechsel dann bitte daran denken face-wink ...

Da im Suchmuster nur die Uhrzeit in der Klammer steht, wird auch nur diese als $1 in die Zieldatei geschrieben.

Grüße
bastla
ColdZero89
ColdZero89 21.06.2012 aktualisiert um 16:46:19 Uhr
Goto Top
Zitat von @bastla:
> Anmerkung: Tausche total unnötiges ".\" gegen (nur bei Dateinamen/Pfaden ohne Leerzeichen nicht erforderliche)
Anführungszeichen ... face-wink

das ".\" hab ich gemacht da das Skript ja noch in Unterordner zu verschwinden hat und die Ordnerstruktur dann größer wird, das wird Angepasst.
Dazu hab ich mir das angewöhnt und ich finds irgendwie "sauberer" face-smile

----
Hinsichtlich des Suchmusters hast Du ja erfreulicher Weise meinen Fehler face-sad mit der Einschränkung bei den Minuten schon
behoben.

Deinen Fehler? Ehr meinen Fehler durch Tausende von Zahlen nicht zu erkennen, das es sich um HH:MM:00 handelt ^^ Somit hab ich nur kurz nachgedacht und "mh muss doch gehen" gedenkt (ja das ist mit absicht face-smile)

Was das störende Datum anlangt: Wenn Du den "Pattern"-Wert entsprechend anpasst, kannst Du das verschwinden
lassen:
>>"%R%" echo Set rE=New
> RegExp:rE.Global=True:rE.Pattern="[0-3]\d.[0-1]\d.20[1-9]\d ([0-2]\d:[0-5]\d:00)"
> 
- es wird so nach einem String entsprechend dem Muster
TT.MM.JJJJ hh:mm:ss
> 
gesucht (und kann daher nur für Anlage 2 verwendet werden), wobei die Jahreszahl allerdings auf Werte im Bereich
2010 bis 2099 beschränkt ist - vor dem Jahrhundertwechsel dann bitte daran denken face-wink ...

Da im Suchmuster nur die Uhrzeit in der Klammer steht, wird auch nur diese als $1 in die Zieldatei geschrieben.

BITTE was? xD könntest du mir den Codeschnippel mal erläutern? ich versteh davon grad nur den kram mit der Zeit, versteh aber nicht wieso zuerst "[0-3]\d.[0-1]\d." angewand wird. was hat das zu bedeuten?

Dazu: Kann man diesen Punkt "20[1-9]\d" der mir nun aussehen lässt als würde er nur nach 20X suchen und nicht mit 20XX und wenn er nach 20XX sucht, wieso das nicht auch so geht "2[1-9]\d"

Gesucht wurd sowieso nur in Anlage 2 alles andere wird so verschoben ;)

Und Du mit deinem Batch xD du bistn Crack bastla! Das ist nicht mehr normal :D

Mal gucken vllt stell ich das Ganze noch um, mein Chef hat heute aber ein so riesen Grinsen auf den Wangen, obwohl er NICHTS davon versteht, das ich glaub ich lass das so ;P Gibt mir mehr Anreiz auch mal in VBScript reinzuschnuppern und das nicht doch alles über Batch zu lösen ist :D

Aber ein erneutes Danke - ich verbeuge mich vor dir Bastla!

Grüßte Coldi
bastla
bastla 21.06.2012, aktualisiert am 24.06.2012 um 14:49:07 Uhr
Goto Top
Hallo ColdZero89!

Mit dem Hinweis, dass "\d" für eine beliebige Ziffer (also in Langform geschrieben "[0-9]") steht (mehr dazu bei MS themselves), sollte das vielleicht etwas leichter nachvollziehbar sein - die Zeile soll natürlich die Zeile 10 in der Batchversion ersetzen).

Was die Batch-Version angeht: Es wird ja einfach nur das VBScript durch den Batch erzeugt - so müssen nicht 2 Dateien verwaltet werden ...

Grüße
bastla

P.S.: Ganz exakt wäre übrigens die Pattern-Schreibweise
[0-3]\d\.[0-1]\d\.20[1-9]\d ([0-2]\d:[0-5]\d:00)
da ein nicht per "\" maskierter "." für ein beliebiges Zeichen steht ...
ColdZero89
ColdZero89 21.06.2012 aktualisiert um 17:00:37 Uhr
Goto Top
Moinsen
Ah ^^ Das erklärt auch wieso da was mit Repariert.vbs steht.

Und das mit \d - ja das ist nun verständlich.
geht dann kein \d\d?

Also

RegExp:rE.Global=True:rE.Pattern="[0-3]\d.[0-1]\d.2[0-9][0-9]\d ([0-2]\d:[0-5]\d:00)"   

Müsste Theoretisch doch auch gehen oder seh ich das so falsch?

und die Zeilen

rE.Global = True
rE.Pattern = XXXXXXXXXX

hast du nun in einer Zeile zusammengefasst? (s.o.)

Wenn ich mich anfange mit den "Global" und "Pattern" usw zu beschäftigen dann versteh ich das voll face-big-smile

Bisher versteh ich soviel das du die variable rE mit New RegExp deklarierst und über New RegExp dann Global und Pattern aufrufst.

Mensch die Schulzeiten mit PHP und Java und co ham doch was gebracht.

Grüßle Coldi
bastla
bastla 21.06.2012 aktualisiert um 17:09:32 Uhr
Goto Top
Hallo ColdZero89!
Mensch die Schulzeiten mit PHP und Java und co ham doch was gebracht.
Dann darf ich Dir auch zumuten, "rE" als Objekt, dessen Eigenschaften "Global" (es sollen alle, nicht nur die erste Fundstelle berücksichtigt werden) und "Pattern" (= Suchmuster) vorweg gesetzt werden, damit danach die Methode "Replace" verwendet werden kann, zu bezeichnen face-wink.
hast du nun in einer Zeile zusammengefasst? (s.o.)
In Basic ist es erlaubt, mehrere Zeilen mit Trennung durch ":" in eine Zeile zu schreiben.
2[0-9][0-9]\d
ginge natürlich auch, aber da ja "[0-9]" durch "\d" ersetzt werden kann, genügt auch
2\d\d\d
oder
2\d{3}
(Erklärung siehe Link im vorigen Kommentar) ...

In allen diesen Fällen würden aber natürlich auch Datumswerte aus den Jahren 2000 bis 2009 gefunden.

Grüße
bastla
ColdZero89
ColdZero89 21.06.2012 aktualisiert um 17:26:11 Uhr
Goto Top
Moinsen

ja bastla du darfst mir auch sowas um die Ohren hauen... 2 Jahre Schulische Ausbildung mit Anwendungsentwicklung (Grund C, C++, PHP, SQL, Java) und während meiner Ausbildung zum Systemintegrator (MySQL, Java, PHP) also versteh ich das auch, was du da schreibst mit den "Fachbegriffen"

AH dann werd ich wahrscheinlich das anwenden, da ich nun rückläufig ab 2005 ALLE Daten vom FTP laden darf......

Ich denke ich bau das Konstrukt morgen um und lade das eine Jahr neu runter.
Sind ja nur 52x 3 Datein die runtergeladen werden müssen und und dann umgewandelt werden.

Ich benenn die momentan dann immer per Hand das Datum um. Also zu 20051217_PVU2/PVU1/Allg
Ja da is noch eine Dritte Datei zugekommen aber die muss auch nur verschoben und umbenamst werden.

Ich setz das morgen mal um Bastla, zieh das mal testweise durch ein paar Datein durch und teste auch mal deine OnlyBatch Methode (Mit Batchscripts komm ich um so einiges besser klar)

Und nochmal danke eh, das hier is echt seid jahren das beste IT Forum. Schnelle Hilfe von Netten Menschen und vorallem auch noch so hilfbereiten Menschen dass das einem erklärt wird und man dann auch alles versteht face-big-smile

Grüße ausm Sonnigem Hamburg face-big-smile

Der Cold

P.S.: Meinem Chef gerade erzählt, dass das Problem mit dem Datum dank Kompetenter Hilfe auch gelöst ist und er somit seine Statistiken voll fahren kann ^^ - da kam er nämlich auch mit eben an, dass das ja gut wäre wegen statistiken und ach herrje D:
ColdZero89
ColdZero89 22.06.2012 um 12:09:58 Uhr
Goto Top
Moinsen ausm übelst Warmen Hamburg!!!

Erstens: Vielen lieben Dank an dich bastla für deine Geduld und dein engagement (Das Wort erstmal gegooglet, das nutzt man so wenig)

Läuft 1a. Nutze NOCH die Variante mit 2 Datein (VBS&Batch) und werde erstmal anfangen die Datein vom FTP zu ziehen und damit zu verarbeiten.

Habe außerdem die Ausgabe für $1 um das Datum erweitert, macht die Verarbeitung in Statistiken erheblich leichter.

Das OnlyBatch probier ich dann heute Nachmittag kurz vor Feierabend mal aus.


Das Problem ist damit vollends Behoben. Den Beitrag makiere ich aber NOCH nicht als gelöst. Werde nachher noch alle vollständigen Quellcodes Online stellen und dann als Gelöst makieren.

Grüße ColdZero
ColdZero89
ColdZero89 26.06.2012 aktualisiert um 16:14:27 Uhr
Goto Top
So nun die Scripte - total verpennt!

Batch:
@echo off

rem Batch-Skript zur Verarbeitung von PV-Datein aus Saarbrücken 
rem v1.0 Kevin 22.06.12

set mydate=%date:~-4%%date:~-7,2%%date:~-10,2%

move .\XYZ*PVU2*.csv .\PVU2.csv

cscript .\Zeilenumbruch.vbs

move .\PVU2_new.csv .\Archiv\%mydate%_PVU2.csv 
move .\XYZ*PVU1*.csv .\Archiv\%mydate%_PVU1.csv 
move .\XYZ*Allg*.csv .\Archiv\%mydate%_Allg.csv

del .\PVU2.csv

VBS
Ein = "C:\PFAD\PVU2.csv"  
Aus = "C:\PFAD\PVU2_new.csv"  

Set fso = CreateObject("Scripting.FileSystemObject")  
T = fso.OpenTextFile(Ein).ReadAll
Set rE = New RegExp
rE.Global=True:rE.Pattern="([0-3]\d.[0-1]\d.2[0-9]\d\d [0-2]\d:[0-5]\d:00)"  

fso.CreateTextFile(Aus).Write rE.Replace(T, vbNewLine & "$1")  

Gruß Kevin
ColdZero89
ColdZero89 27.06.2012 um 16:34:33 Uhr
Goto Top
Version 2.0 / Danke an bastla!

Zeile 5 steht da wirklich so drin.
@echo off & setlocal

rem Batch-Skript zur Verarbeitung von PV-Datein
rem Inbegriffen erstellung eines VBScriptes um Zeilenumbrücke in die PVU2 Datei einzufügen
rem v2.0 Kevin Lange 27.06.12 (Hilfe durch Administrator.de User: bastla)

rem Deklarierung
set "Ein=C:\XYZ\Test\PVU2.csv"  
set "Aus=C:\XYZ\Test\PVU2_new.csv"  
set mydate=%date:~-4%%date:~-7,2%%date:~-10,2%

rem PVU2 Datei umbenennen
move .\Minutenmittelwerte*PVU2*.csv .\PVU2.csv

rem Erstellung des VBS
set "R=%temp%\Zeilenumbruch.vbs"  
>"%R%" echo Set   
>fso=CreateObject("Scripting.FileSystemObject"):T=fso.OpenTextFile("%Ein  
>%").ReadAll  
>>"%R%" echo Set rE=New RegExp:rE.Global=True:rE.Pattern="([0-3]\d.[0-1]\d.2[0-9]\d\d [0-2]\d:[0-5]\d:00)"  
>>"%R%" echo fso.CreateTextFile("%Aus%").Write rE.Replace(T,vbNewLine ^&   
>>"$1")  

rem Ausführen des VBS
cscript //nologo "%R%"  

rem Datein in Zielordner verschieben
move .\PVU2_new.csv .\Mail\%mydate%_PVU2.csv 
move .\XYZ*PVU1*.csv .\Mail\%mydate%_PVU1.csv 
move .\XYZ*Allg*.csv .\Mail\%mydate%_Allg.csv

rem PVU2 Datei löschen
del .\PVU2.csv
bastla
bastla 27.06.2012 um 16:56:41 Uhr
Goto Top
Hallo ColdZero89!
Zeile 5 steht da wirklich so drin.
Danke, das ist nett face-smile (aber gar nicht nötig) ...

Grüße
bastla
ColdZero89
ColdZero89 09.07.2012 um 14:46:16 Uhr
Goto Top
Moin,

das ist nicht mein Hirnschmalz der dabei in wallungen gebracht wurde, sondern deiner =)

Ich habs nur angepasst und deinem Gerüst farbe verpasst (also meinen Anforderungen angepasst).

Gruß Zero