Eminent Geschrieben 15. Dezember 2003 Teilen Geschrieben 15. Dezember 2003 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! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Gast roaxius Geschrieben 16. Dezember 2003 Teilen Geschrieben 16. Dezember 2003 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Eminent Geschrieben 17. Dezember 2003 Autor Teilen Geschrieben 17. Dezember 2003 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!! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Gast roaxius Geschrieben 17. Dezember 2003 Teilen Geschrieben 17. Dezember 2003 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! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Gast roaxius Geschrieben 17. Dezember 2003 Teilen Geschrieben 17. Dezember 2003 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Eminent Geschrieben 19. Dezember 2003 Autor Teilen Geschrieben 19. Dezember 2003 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Gast roaxius Geschrieben 19. Dezember 2003 Teilen Geschrieben 19. Dezember 2003 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
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.