fluxx79
Goto Top

Batch gesucht welcher täglich Files mit wechselndem Namen umbenennt und kopiert

Hallo zusammen

Da ich mit Google nicht fündig geworden bin, versuche hier mal mein Gluck.

Ich habe einen Ordner, welcher täglich 2 neue Files erhält.

Beispiel der Files:
2015_07_02_Gehalt.doc
2015_07_02_Rechnung.doc

Nun ist es so, dass ich einen Batch benötige, welche täglich die neusten beiden Files abholt und diese 1. in Gelhalt.doc und Rechnung.doc umbenennen und 2. in einen anderen Ordner kopiert.

Zur Info:
Der Quellordner erhält bereits hunderte solcher Files wie im Beispiel gezeigt mit jeweils anderem Datum.

Könnt ihr mir da mit einer Scriptvorlage helfen?

Vielen Dank und Gruss
Fluxx

Content-Key: 276386

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

Printed on: April 16, 2024 at 04:04 o'clock

Member: Snowman25
Snowman25 Jul 03, 2015 updated at 11:53:00 (UTC)
Goto Top
Hallo Fluxx,

wir helfen gerne, aber wir liefern nicht.
Dies ist aber sehr simpel, deshalb bitteschön:
@ECHO off
SET ordner=pfad\zum\Ordner

PUSHD "C:\Users\Fluxx79\ordner mit Dateien"  

MOVE *_Gehalt.doc "%ordner%\Gehalt.doc"  
MOVE *_Rechnung.doc "%ordner%\Rechnung.doc"  
Die Batch-Datei kannst du über die Aufgabenplanung zu gewissen Uhrzeiten ausführen lassen.

Da MOVE jeweils nur 1 Datei kopieren kann, wenn es einen vollständigen Dateinamen als Ziel bekommt, werden nicht aus Versehen mehrere Dateien zusammengewürfelt.
MOVE wird keine Dateien überschreiben, ausser du fügst die Option /Y hinzu (also MOVE /Y *_Gehalt.doc "%ordner%\Gehalt.de").

Gruß,
@Snowman25

€dit:
Ich sehe gerade, dass du die Frage nochmal editiert hast und mein Batch-File nicht auf deine Anforderungen passt.

@ECHO off
SET ordner=pfad\zum\Ordner
SET tag=%DATE:~0,2%
SET monat=%DATE:~3,2%
SET jahr%DATE:~6,4%

PUSHD "C:\Users\Fluxx79\ordner mit Dateien"  

COPY %jahr%_%monat%_%jahr%_Gehalt.doc "%ordner%\Gehalt.doc"  
COPY %jahr%_%monat%_%jahr%_Rechnung.doc "%ordner%\Rechnung.doc"  
Member: Fluxx79
Fluxx79 Jul 03, 2015 at 11:52:24 (UTC)
Goto Top
Hallo Snowman

Vielen Dank für Deine Bemühungen.

Das Problem ist allerdings, dass im Quellordner sehr viele Files stehen, welche alle wie folgt beginnen Datum_Gehalt.doc.
Will im Detail heissen, dass ich die Variable *_Gehalt.doc nicht verwenden kann, da mir ja sonst alle Files verschoben werden würden.

Ich hoffe, man versteht, was ich damit sagen will.

Beispiel aus Quellordner:
2015_07_02_Gehalt
2015_07_02_Rechnung
2015_07_01_Gehalt
2015_07_01_Rechnung
2015_06_30_Gehalt
2015_06_30_Rechnung
usw


Ich denke, dass könnte einen Knacknuss werden...

Vielen Dank
Fluxx
Member: Snowman25
Solution Snowman25 Jul 03, 2015 updated at 13:14:20 (UTC)
Goto Top
Hallo Fluxx,

probier's mal hiermit. richtet sich nach dem aktuellen Datum:
NUR AUF DEUTSCHEM SYSTEM

@ECHO off
SET ordner=pfad\zum\Ordner
SET tag=%DATE:~0,2%
SET monat=%DATE:~3,2%
SET jahr%DATE:~6,4%

PUSHD "C:\Users\Fluxx79\ordner mit Dateien"  

COPY %tag%_%monat%_%jahr%_Gehalt.doc "%ordner%\Gehalt.doc"  
COPY %tag%_%monat%_%jahr%_Rechnung.doc "%ordner%\Rechnung.doc"  
Member: Fluxx79
Fluxx79 Jul 03, 2015 at 12:29:02 (UTC)
Goto Top
Hallo Snowman

Herzlichen Dank für Deine Hilfe.
Hat wunderbar funktioniert.

Beste Grüsse
Fluxx
Member: Snowman25
Snowman25 Jul 03, 2015 at 13:14:08 (UTC)
Goto Top
Zitat von @Fluxx79:

Hallo Snowman

Herzlichen Dank für Deine Hilfe.
Hat wunderbar funktioniert.

Beste Grüsse
Fluxx

Habe das Skript oben nochmal ausgebessert. Habe das Datum falsch konstruiert (war Jahr.Monat.Jahr anstelle von Tag.Monat.Jahr)
Member: Endoro
Endoro Jul 03, 2015 at 18:03:13 (UTC)
Goto Top
Hey,
das klappt hier zwar, aber in einem englischen Windows nicht. Deshalb sollte besser wmic path Win32_LocalTime GET verwendet werden.
Gruß, Endoro
Mitglied: 114757
114757 Jul 03, 2015 updated at 18:12:17 (UTC)
Goto Top
Oder man holt sich das Datum via Powershell in die Batch:
powershell -ExecutionPolicy ByPass -Command "get-date -F 'yyyy_MM_dd'"
Gruß jodel32
Member: bastla
bastla Jul 03, 2015 at 21:17:36 (UTC)
Goto Top
[OT]
Hallo Snowman!
MOVE wird keine Dateien überschreiben, ausser du fügst die Option /Y hinzu (also MOVE /Y *_Gehalt.doc "%ordner%\Gehalt.de").
Nur zur Sicherheit:
Die Option /Y ist in der COPYCMD-Umgebungsvariablen eventuell voreingestellt.
Dies kann durch die Option /-Y außer Kraft gesetzt werden. Standardmäßig
müssen Sie das Überschreiben von Dateien bestätigen, es sei denn der MOVE-
Befehl wird von einem Batchprogramm aus aufgerufen.
Der letzte Halbsatz gilt übrigens auch für copy ...

Grüße
bastla
[/OT]