swuser
Goto Top

Daten nach Datum suchen, Ordner mit dem Datum anlegen und Daten hineinkopieren.

Hallo Community,
ich bin seit 2 Monaten Azubi zum IT-Kaufmann und soll nun ein kleines Batch-Programm schreiben. Leider habe ich davon fast überhaupt keine Ahnung.

Zu meinem Problem:

Es werden täglich zig automatische Druckaufträge als *.txt generiert in einem Ordner abgelegt, gedruckt und in eine *.dat-Datei umgewandelt (Zwecks Archivierung). Das ist alles schon in einem Batch-Programm so hinterlegt.
Nun sollen die *.dat-Dateien täglich in einen entsprechenden Monatsordner kopiert werden.
Das ist jetzt meine Aufgabe dieses zu programmieren.

Beispiel:

im Ordner X:\Etiketten\Drucker_01\ liegen
Eingang01.dat
Eingang02.dat
Eingang03.dat
Ausgang01.dat (usw)

im Ordner X:\Etiketten\Drucker_02\ liegen
Ausgang01.dat
Ausgang02.dat
Eingang01.dat
Eingang02.dat (usw)

es gibt dann noch viele andere Ordner!

alle sind unterschiedlich und haben ein unterschiedliches Datum.
nun sollen die *.dat-Dateien in ein extra Laufwerk\Ordner (Bsp.: Z:\Etiketten\Archiv\Drucker_01\Monat\) archiviert werden.

ich hoffe, ich konnte mein Problem gut erläutern und hoffe auf Denk- und/oder Lösungsansätze.

Vielen Dank im Vorraus!
Gruß Felix

Content-ID: 126217

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

Ausgedruckt am: 25.11.2024 um 21:11 Uhr

manuel-r
manuel-r 01.10.2009 um 11:47:24 Uhr
Goto Top
Das geht ganz einfach mit xcopy und einem geplanten Task. Schreib dir eine Batch, die ungefähr so aussieht:
setlocal
set erstelldat=%date:.=-%
xcopy <quelle> <ziel>\%erstelldat%\ /d:%erstelldat% /e /v /c /i /y
Ist ungetestet, sollte aber so hinhauen.

Manuel
SWuser
SWuser 01.10.2009 um 12:09:28 Uhr
Goto Top
Danke für die schnelle Antwort!

Das klappt noch nicht so ganz...:

Jetzt erstellt er mir zwar den Ordner mit einem Datum (das sieht auch schon ganz gut aus!), er nimmt aber das heutige Datum, er sollte aber das Datum nehmen, an dem die *.dat-Datei zuletzt geändert wurde. Kann man das irgendwie realisieren?
manuel-r
manuel-r 01.10.2009 um 12:16:14 Uhr
Goto Top
Das verstehe ich jetzt nicht ganz.
Die Ausgangslage war doch, das über den ganzen Tag im Quellverzeichnis diverse Dateien erstellt werden. Am Ende des Tages sollen die dann zusätzlich in einen Archivordner kopiert werden. Jedoch nur die von heute.
Nehmen wir also an heute werden 20 Dateien im Quellverzeichnis erstellt oder geändert. Jetzt kommt heute Nacht um 23:50 der geplante Task und startet die Batch. Dann wird alles mit Datum von heute in einen Ordner mit Datum von heute kopiert.
Morgen Abend kommt der geplante Task nochmal und kopiert die Dateien von morgen, weil morgen heute ja gestern ist face-wink
Und so läuft das dann Tag für Tag.
SWuser
SWuser 01.10.2009 um 12:23:20 Uhr
Goto Top
Ja, an und für sich ist das ja richtig, was du schreibst.
So funktioniert das ja auch, außer das er mir die Dateien eines Monats immer in den gleichen Ordner schieben soll, sprich: nicht jeden Tag einen neuen Ordner erstellen soll.
Soweit klappt das ja schon super face-smile

Jetzt habe ich aber noch einen bzw zwei Ordner, in denen vorher noch nichts gelöscht, bzw wegkopiert wurde. D. h. die sind noch voller alter Dateien (deswegen fragte ich oben auch so pauschal face-wink )
manuel-r
manuel-r 01.10.2009 um 12:34:46 Uhr
Goto Top
Ok, dann mach's halt so:
setlocal
set erstelldat=%date:.=-%
set targetdat=%erstelldat:~3%
xcopy <quelle> <ziel>\%targetdat%\ /d:%erstelldat% /e /v /c /i /y
Mit dem ersten set wird in die Variable erstelldat das aktuelle Datum geschrieben und gleichzeitig Punkte durch Striche erstezt, weil xcopy das so erwartet. Mit dem zweiten set werden dann die ersten drei Zeichen (also Tag und Trennzeichen) entfernt und der Variable targetdat zugewiesen.
Um die schon älteren Datein zu behandeln schaust du dir einfach mal die Hilfe zu xcopy an und wozu der schalter /d dient.
SWuser
SWuser 01.10.2009 um 13:17:37 Uhr
Goto Top
Okay, danke face-smile

Ein kleines Problem habe ich dann noch:

Er kopiert mir jetzt nur Dateien vom Mai 2009, alle anderen bleiben unangetastet; diese kopiert er auch nur in den Ordner mit dem heutigen Datum.

Vielen Dank, ist echt super, dass du mir so viel hilfst!!
Biber
Biber 01.10.2009 um 18:54:28 Uhr
Goto Top
Moin SWuser,

ich weiss es nicht, ob du den letzten Tipp von manuel-r als solchen wahrgenommen hast...
Um die schon älteren Datein zu behandeln schaust du dir einfach mal die Hilfe zu xcopy an und wozu der schalter /d dient.

Wenn du nun aber eventuell so fixiert auf die Erläuterung des Schalters /D wie /DeristBestimmtWichtig warst, dass du den Rest überlesen haben solltest:
Es gibt auch noch den nützlichen Schalter /L wie /LassMichErstmaGucken.
Damit kannst du dir für jede noch so abdrehte Xcopy-Parameter-Kombination erstmal am CMD-Prompt angucken, was denn OHNE diesen Schalter /L passieren würde.

Bitte schau in die XCopy-Hilfe, dann noch mal in meinen Kommentar, dann nochmal in die Hilfe und dann teste den Krams und poste danach die Fehlerursache.

Danke
Biber
SWuser
SWuser 02.10.2009 um 07:53:02 Uhr
Goto Top
Guten Morgen,

hatte es gestern nicht mehr geschafft zu schreiben,
aber: es hat alles so weit geklappt. Ist schon alles i.O. face-smile

Danke aber für die Hilfen!!