Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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
GELÖST

Per Batch einer CSV-Datei Zeilen verpassen

Frage Entwicklung Batch & Shell

Mitglied: ColdZero89

ColdZero89 (Level 1) - Jetzt verbinden

20.06.2012 um 17:15 Uhr, 4706 Aufrufe, 20 Kommentare

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.
Mitglied: bastla
20.06.2012 um 17:47 Uhr
Hallo ColdZero89, welcome back!

Als VBScript mit ein wenig RegEx etwa so:
01.
Ein = "D:\Defekt.csv" 
02.
Aus = "D:\Repariert.csv" 
03.
 
04.
Set fso = CreateObject("Scripting.FileSystemObject") 
05.
T = fso.OpenTextFile(Ein).ReadAll 
06.
Set rE = New RegExp 
07.
rE.Global = True 
08.
rE.Pattern = "(00:[0-2]\d:00)" 
09.
 
10.
fso.CreateTextFile(Aus).Write rE.Replace(T, vbNewLine & "$1")
Grüße
bastla
Bitte warten ..
Mitglied: NetWolf
20.06.2012, aktualisiert um 17:48 Uhr
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
/Edit

Grüße aus Rostock
Wolfgang
(Netwolf)
Bitte warten ..
Mitglied: ColdZero89
20.06.2012, aktualisiert um 20:39 Uhr
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 ^^
Bitte warten ..
Mitglied: bastla
20.06.2012, aktualisiert um 21:07 Uhr
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 :
01.
@echo off & setlocal 
02.
set "Ein=D:\Defekt.csv" 
03.
set "Aus=D:\Repariert.csv" 
04.
 
05.
set "R=%temp%\RepariereCSV.vbs" 
06.
 >"%R%" echo Set fso=CreateObject("Scripting.FileSystemObject"):T=fso.OpenTextFile("%Ein%").ReadAll 
07.
>>"%R%" echo Set rE=New RegExp:rE.Global=True:rE.Pattern="(00:[0-2]\d:00)" 
08.
>>"%R%" echo fso.CreateTextFile("%Aus%").Write rE.Replace(T,vbNewLine ^& "$1") 
09.
 
10.
cscript //nologo "%R%"
Bitte warten ..
Mitglied: ColdZero89
21.06.2012, aktualisiert um 09:17 Uhr
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
Bitte warten ..
Mitglied: ColdZero89
21.06.2012, aktualisiert um 11:42 Uhr
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
01.
rE.Pattern = "(00:[0-2]\d:00)"
Sieht nun so aus
01.
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

01.
Ein = "D:\Minutenmittelwerte*PVU2*.csv"
Funktioniert nur nicht.

Und für die Ausgabe in ein Datum

01.
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
Bitte warten ..
Mitglied: ColdZero89
21.06.2012, aktualisiert um 12:09 Uhr
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.

01.
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.

01.
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
Bitte warten ..
Mitglied: ColdZero89
21.06.2012, aktualisiert um 13:26 Uhr
So Plan umgeworfen.

Plan sieht nun wie folgt aus:

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

01.
Set WSHShell = WScript.CreateObject("WScript.Shell") 
02.
  
03.
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
Bitte warten ..
Mitglied: ColdZero89
21.06.2012, aktualisiert um 13:46 Uhr
So Alles soweit sehr zufriedenstellend fehlt nur noch das mit dem Datum.

Folgendermaßen sehen meine beiden Datein nun aus:

.BAT-Datei

01.
@echo off 
02.
 
03.
set mydate=%date:~-4%%date:~-7,2%%date:~-10,2% 
04.
 
05.
move .\Minutenmittelwerte*PVU2*.csv .\PVU2.csv 
06.
 
07.
cscript .\Zeilenumbruch.vbs 
08.
 
09.
move .\PVU2_new.csv .\Archiv\%mydate%_PUV2.csv 
10.
 
11.
move .\Minutenmittelwerte*PVU1*.csv .\Archiv\%mydate%_PUV1.csv 
12.
 
13.
del .\PVU2.csv
VBS Datei (Danke nochmal an bastla)

01.
Ein = "C:\PFAD\PVU2.csv" 
02.
Aus = "C:\PFAD\PVU2_new.csv" 
03.
 
04.
Set fso = CreateObject("Scripting.FileSystemObject") 
05.
T = fso.OpenTextFile(Ein).ReadAll 
06.
Set rE = New RegExp 
07.
rE.Global = True 
08.
rE.Pattern = "([0-2]\d:[0-5]\d:00)" 
09.
 
10.
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
Bitte warten ..
Mitglied: bastla
21.06.2012, aktualisiert um 16:31 Uhr
Hallo ColdZero89!

Wenn schon Batch, dann aber doch besser gleich nur Batch (ungetestet):
01.
@echo off & setlocal 
02.
set "mydate=%date:~-4%%date:~-7,2%%date:~-10,2%" 
03.
 
04.
move "Minutenmittelwerte*PVU2*.csv" "%Ein%" 
05.
 
06.
set "Ein=PVU2.csv" 
07.
set "Aus=PVU2_new.csv" 
08.
set "R=%temp%\RepariereCSV.vbs" 
09.
 >"%R%" echo Set fso=CreateObject("Scripting.FileSystemObject"):T=fso.OpenTextFile("%Ein%").ReadAll 
10.
>>"%R%" echo Set rE=New RegExp:rE.Global=True:rE.Pattern="([0-2]\d:[0-5]\d:00)" 
11.
>>"%R%" echo fso.CreateTextFile("%Aus%").Write rE.Replace(T,vbNewLine ^& "$1") 
12.
cscript //nologo "%R%" 
13.
 
14.
move "%Aus%" "Archiv\%mydate%_PUV2.csv" 
15.
 
16.
move "Minutenmittelwerte*PVU1*.csv" "Archiv\%mydate%_PUV1.csv" 
17.
 
18.
del "%Ein%"
Anmerkung: Tausche total unnötiges ".\" gegen (nur bei Dateinamen/Pfaden ohne Leerzeichen nicht erforderliche) Anführungszeichen ...
Hinsichtlich des Suchmusters hast Du ja erfreulicher Weise meinen Fehler 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 ...

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

Grüße
bastla
Bitte warten ..
Mitglied: ColdZero89
21.06.2012, aktualisiert um 16:46 Uhr
Zitat von bastla:
> Anmerkung: Tausche total unnötiges ".\" gegen (nur bei Dateinamen/Pfaden ohne Leerzeichen nicht erforderliche)
Anführungszeichen ...

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"

----
Hinsichtlich des Suchmusters hast Du ja erfreulicher Weise meinen Fehler 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 )

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 ...

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
Bitte warten ..
Mitglied: bastla
21.06.2012, aktualisiert 24.06.2012
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 ...
Bitte warten ..
Mitglied: ColdZero89
21.06.2012, aktualisiert um 17:00 Uhr
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

01.
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

01.
rE.Global = True 
02.
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

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
Bitte warten ..
Mitglied: bastla
21.06.2012, aktualisiert um 17:09 Uhr
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 .
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
Bitte warten ..
Mitglied: ColdZero89
21.06.2012, aktualisiert um 17:26 Uhr
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

Grüße ausm Sonnigem Hamburg

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:
Bitte warten ..
Mitglied: ColdZero89
22.06.2012 um 12:09 Uhr
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
Bitte warten ..
Mitglied: ColdZero89
26.06.2012, aktualisiert um 16:14 Uhr
So nun die Scripte - total verpennt!

Batch:
01.
@echo off 
02.
 
03.
rem Batch-Skript zur Verarbeitung von PV-Datein aus Saarbrücken  
04.
rem v1.0 Kevin 22.06.12 
05.
 
06.
set mydate=%date:~-4%%date:~-7,2%%date:~-10,2% 
07.
 
08.
move .\XYZ*PVU2*.csv .\PVU2.csv 
09.
 
10.
cscript .\Zeilenumbruch.vbs 
11.
 
12.
move .\PVU2_new.csv .\Archiv\%mydate%_PVU2.csv  
13.
move .\XYZ*PVU1*.csv .\Archiv\%mydate%_PVU1.csv  
14.
move .\XYZ*Allg*.csv .\Archiv\%mydate%_Allg.csv 
15.
 
16.
del .\PVU2.csv
VBS
01.
Ein = "C:\PFAD\PVU2.csv" 
02.
Aus = "C:\PFAD\PVU2_new.csv" 
03.
 
04.
Set fso = CreateObject("Scripting.FileSystemObject") 
05.
T = fso.OpenTextFile(Ein).ReadAll 
06.
Set rE = New RegExp 
07.
rE.Global=True:rE.Pattern="([0-3]\d.[0-1]\d.2[0-9]\d\d [0-2]\d:[0-5]\d:00)" 
08.
 
09.
fso.CreateTextFile(Aus).Write rE.Replace(T, vbNewLine & "$1")
Gruß Kevin
Bitte warten ..
Mitglied: ColdZero89
27.06.2012 um 16:34 Uhr
Version 2.0 / Danke an bastla!

Zeile 5 steht da wirklich so drin.
01.
@echo off & setlocal 
02.
 
03.
rem Batch-Skript zur Verarbeitung von PV-Datein 
04.
rem Inbegriffen erstellung eines VBScriptes um Zeilenumbrücke in die PVU2 Datei einzufügen 
05.
rem v2.0 Kevin Lange 27.06.12 (Hilfe durch Administrator.de User: bastla) 
06.
 
07.
rem Deklarierung 
08.
set "Ein=C:\XYZ\Test\PVU2.csv" 
09.
set "Aus=C:\XYZ\Test\PVU2_new.csv" 
10.
set mydate=%date:~-4%%date:~-7,2%%date:~-10,2% 
11.
 
12.
rem PVU2 Datei umbenennen 
13.
move .\Minutenmittelwerte*PVU2*.csv .\PVU2.csv 
14.
 
15.
rem Erstellung des VBS 
16.
set "R=%temp%\Zeilenumbruch.vbs" 
17.
>"%R%" echo Set  
18.
>fso=CreateObject("Scripting.FileSystemObject"):T=fso.OpenTextFile("%Ein 
19.
>%").ReadAll 
20.
>>"%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)" 
21.
>>"%R%" echo fso.CreateTextFile("%Aus%").Write rE.Replace(T,vbNewLine ^&  
22.
>>"$1") 
23.
 
24.
rem Ausführen des VBS 
25.
cscript //nologo "%R%" 
26.
 
27.
rem Datein in Zielordner verschieben 
28.
move .\PVU2_new.csv .\Mail\%mydate%_PVU2.csv  
29.
move .\XYZ*PVU1*.csv .\Mail\%mydate%_PVU1.csv  
30.
move .\XYZ*Allg*.csv .\Mail\%mydate%_Allg.csv 
31.
 
32.
rem PVU2 Datei löschen 
33.
del .\PVU2.csv
Bitte warten ..
Mitglied: bastla
27.06.2012 um 16:56 Uhr
Hallo ColdZero89!
Zeile 5 steht da wirklich so drin.
Danke, das ist nett (aber gar nicht nötig) ...

Grüße
bastla
Bitte warten ..
Mitglied: ColdZero89
09.07.2012 um 14:46 Uhr
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
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
VB for Applications
gelöst Bestimmte Spalten aus CSV-Datei auslesen (VBS) (9)

Frage von Gurkenhobel zum Thema VB for Applications ...

VB for Applications
Bestimmte Daten aus eine CSV-Datei in eine Excel-Tabelle importieren (2)

Frage von MariaElena zum Thema VB for Applications ...

Batch & Shell
gelöst PS Werte CSV-Datei in AD Attribut (3)

Frage von lupolo zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...