petercroach
Goto Top

Standard Bestimmte Datei per batch zu einer csv zusammenfügen und alte mit Timestamp versehen

Hallo

Ich möchte über eine batch datei mehrere csv dateien zu einer einzigen zusammenfügen.
Ich habe zwei Dateien die in mehreren Ordner hinterlegt sind aber immer den gleichen Dateinamen haben.

Beispiel:
Ordner1/1.csv
Ordner1/2.csv

Ordner2/1.csv
Ordner2/2.csv
usw..

Die datei 1.csv aus allen Unterordnern soll zusammen gefügt werden und die erste Zeile der zweiten Datei soll entfernt werden.
Die Datei soll anschließend zusammen gefügt werden und die "alte datei" soll mit einem Timestamp hintersehen werden.

Bisher funktioniert das ganze so, dass die Unterordner durchgegangen werden und die erste Zeile der zeiten Datei auch entfernt wird.
Ich benötige nun nur noch, dass ich einen bestimmten dateinamen auswählen kann z.b 1.csv und anschließend der Datei nachdem Sie zusammengefügt umbenannt wird mit Dateiname+Timestamp.
Habt Ihr eine Idee?
Danke!


@echo off & setlocal 
set "Ordner=Ordner  
set "Sammel=OrdnerZusammen.csv"  

pushd "%Ordner%"  
if exist "%Sammel%" del "%Sammel%"  
for %%i in (*.csv) do if not exist "%Sammel%" for /f "usebackq delims=" %%z in ("%%i") do if not exist "%Sammel%" echo %%z>"%Sammel%"  
for %%i in (*.csv) do more +1 "%%i">>"%Sammel%"  
popd

Content-Key: 192661

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

Printed on: April 19, 2024 at 22:04 o'clock

Mitglied: 60730
60730 Oct 12, 2012 updated at 08:00:07 (UTC)
Goto Top
moin und willkommen...

  • Bitte male <code> vor und </code> nach deiner Batch rein.
  • Dann gib mal in ner Dosbox set /? ein und schaue dir an, was /p bedeutet.
  • Nun weißt du, wie du eine Variable "auswählen" kannst.
  • von daher ist es dann ein leichtes aus dem *.csv %variable%.cvs zu machen.
  • Und wenn du während der Testphase die erste Zeile ausremst, dann wirds noch leichter.
Du siehst - ganz easy

Gruß
Member: PeterCroach
PeterCroach Oct 12, 2012 at 08:03:09 (UTC)
Goto Top
Hi Rambospfeil,

kannst du mir auf die Sprünge helfen?
Wie würde der Code deiner Meinung nach dann aussehen?
Mitglied: 60730
60730 Oct 12, 2012 updated at 08:11:48 (UTC)
Goto Top
Salü,

hab ich doch...(das mit den Sprüngen) Und "danke für die Tags..

Ich kann keine Batches schreiben, denn die würden dann meinem Arbeitgeber gehören, denn alles - was ich während meiner Arbeitszeit entwickel, gehört meinem Cheff.

Gruß

PS: Such mal nach einem gewissen Benutzer "Biber", der soll hier mal ein wunderbares Tutorial zum andern Thema Batch und Datum geschrieben haben.
Member: andimue
andimue Oct 12, 2012 at 09:22:33 (UTC)
Goto Top
Vielleicht noch ein Tipp:

statt die Dateien mit "more" auszugeben könntest du dir mal die Möglichkeiten des copy-Kommandos anschauen, mit der man mehrere Dateien zu einer zusammenfügen kann:

c:\>copy /?
Kopiert eine oder mehrere Dateien an eine andere Position.

COPY [/D] [/V] [/N] [/Y | /-Y] [/Z] [/A | /B] Quelle [/A | /B]
[+ Quelle [/A | /B] [+ ...]]
[Ziel [/A | /B]]
...
Um Dateien aneinander zu hängen, geben Sie eine einzelne Datei als Ziel an,
aber mehrere Dateien als Quelle (unter Verwendung von Platzhaltern oder
in der Form: Datei1 + Datei2 + ...).
Mitglied: 60730
60730 Oct 12, 2012 at 10:43:42 (UTC)
Goto Top
Salve,

@ andi:
verwirr ihn doch nicht....

Die datei 1.csv aus allen Unterordnern soll zusammen gefügt werden und die erste Zeile der zweiten Datei soll entfernt werden.

more passt,ist besser als ein for /skip=1
Member: andimue
andimue Oct 12, 2012 at 12:52:00 (UTC)
Goto Top
@60730:

hast' natürlich Recht, ich hab den Halbsatz mit der "ersten Zeile der zweiten Datei" (im "dritten Anlauf" beim "vierten Bier") total überlesen