Zum Inhalt springen

CSV-Datei mit Batch auslesen


Eminent

Empfohlene Beiträge

Ich habe jetzt folgendes Problem, ich bekomme mehrere CSV-Dateien geliefert (Namesgebung immer gleich: Dienstzeiten_XXXX_YY.csv). XXXX steht für eine vierstellige Zahl und YY ist der Monat.

Ich soll jetzt mit Hilfe einer Batchdatei alles CSV-Dateien aus einem Monat nehmen auslesen und in eine (neue) gemeinsame CSV-Datei schreiben (CSV immer anhängen).

Ich muss aber leider gestehen, ich hab noch nie in meinem Leben ne Batchdatei geschrieben.

Wie macht man sowas? Welche Programmiersprache nimmt man da? Ich hab echt keine Ahnung.

Könnt ihr mir denn vielleicht weiter helfen?

Danke schonmal!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wenn du eine Batch-Datei schreiben sollst, gehe ich jetzt mal davon aus, dass dies unter Windows geschehen soll? Welches Windows? NT, XP, 98, 2000??? Da unterscheiden sich die Batch-Befehle nämlich teilweise erheblich.

Eine Batchdatei schreibst du, indem du einfach einen Editor (edit oder Notepad) öffnest und eine Datei anlegst, die die Endung .bat hat. Du führst diese unter Windows einfach durch Doppelklick aus.

Nun ist es aber wichtig, welches Windows du einsetzt, da sich die benötigten Befehle (z.B. for) unterscheiden.

Die Vorgehensweise sollte ungefähr so sein, dass du mit "for" einen Dateiensatz durchgehst und jeweils "Zieldatei.csv = Zieldatei.csv + AktuelleDatei.csv" machst.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also Betriebssystem ist Windows NT 4.0 SP6 und so in die Richtung mit for hätte ich auch gedacht.

Wenn ich alle CSV-Datein durch bin soll die abgearbeiteten dann in einen Ordner Sicherung schieben! Ich hab gestern in der Hilfe gelesen, dass man das mit MOVE machen kann, lieg ich da richtig?

Danke!!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ja, mit move kannst du die Dateien ins Verzeichnis bewegen!

Und zu der Sache mit for:

Probiere mal folgende Batch-Datei (z.B. Concat.bat): Du musst ihr den Monat als Parameter übergeben! z.B. Aufruf: "concat 12" für den Monat Dezember.


@echo off


copy nul Monat%1.csv


for %%f in ( Dienstzeiten_????_%1.csv ) do copy Monat%1.csv + %%f Monat%1.csv /B


move .\Dienstzeiten_????_%1.csv .\Sicherung\


Damit sollte das alles klappen!

Ich habe es unter XP getestet. Sollte aber auch unter NT gehen!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hm, vielleicht noch ein paar Kommentare, wenn du das noch nie gemacht hast:


@echo off

Unterdrückt das Wiederholen der auszuführenden Befehle. Es werden also nur die Ergebnisse angezeigt

copy nul Monat%1.csv

Legt die Datei Monat12.csv an (12, da du in meinem Beispiel 12 als Parameter beim Aufruf übergibst. (%1 steht für den ersten übergebenen Parameter... %2, %3 usw) Die Datei brauchst du für den nächsten Befehl.

for %%f in ( Dienstzeiten_????_%1.csv ) do copy Monat%1.csv + %%f Monat%1.csv /B

Geht alle Dateien, die dem Kriterium in der Klammer entsprechen durch und setzt sie jeweils in die Variable %%f. Die Fragezeichen in der Klammer stehen für jeweils 1 beliebiges Zeichen, also insgesamt 4. %1 steht wieder für alle Dienstzeiten aus dem Monat 12. Für alle diese Dateien wird die Datei Monat12.csv um die jeweis gefundenen Dateien ergänzt. Der Parameter /B steht für binäres Kopieren, da es sonst nicht klappt.

move .\Dienstzeiten_????_%1.csv .\Sicherung\

Verschiebt alle Dateien, die dem Kriterium entsprechen in den Ordner Sicherung, der ein Unterordner des aktuellen Verzeichnisses ist. Der "." vor dem Backslash steht für das aktuelle Verzeichnis. Wenn dein Verzeichnis Sicherung woanders legt (z.B. c:\sicherung) musst du das anpassen.

Sag einfach mal, ob es so klappt!

Gruß roaxius

Link zu diesem Kommentar
Auf anderen Seiten teilen

Danke für deine Hilfe!

Es hat sich dann noch rausgestellt, dass ich nicht einzelne Monate nehmen muss sondern, dass es reicht, wenn ich alle CSV-Dateien im Verzeichnis nehme!

Ich hab das jetzt so gemacht:

@ ECHO OFF

del booking.dat

echo off>booking.dat

for %%x in (*.csv) do copy /b booking.dat+%%x booking.dat

move .\*.csv .\sicherung

Kurz zur Erklärung. Die zu entstehende Datei muss booking.dat heißen und immer nur die aktuellen CSVs enthalten. Deswegen lösche ich eine evtl. vorhanden am Anfang und erzeuge dann eine leer neu. Weiß nicht ob das optimal so ist aber es geht! :-)

Das for ist ja so wie du mir geschrieben hast nur, das ich halt die Monatsunterscheidung nicht brauche. /b musste ich machen, weil wenn ich es weg gelassen habe hat copy hinter jede CSV (am Ende der letzten Zeile) ein Leerzeichen geschrieben. Mit /b macht es das nicht.

Ja auf jeden Fall danke nochmal für deine Hilfe hat mir auf jeden Fall sehr geholfen!! DANKE

Link zu diesem Kommentar
Auf anderen Seiten teilen

Schön, dass es geklappt hat!

/B habe ich ja oben auch gemacht. Das steht für binäres Kopieren, weil er sonst tatsächlich Sonder- oder Leerzeichen erzeugt.

Das del booking. dat und anschließende echo... kannst du dir auch mit meinem Schritt sparen... "copy nul booking. dat" würde die Datei leer anlegen bzw. überschreiben. In einem Schritt halt.

Aber es klappt ja auch so, auch wenn ich das mit echo off > booking.dat so nicht kannte ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...