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

Ausgedruckt am: 28.03.2024 um 23:03 Uhr

Mitglied: Snowman25
Snowman25 03.07.2015 aktualisiert um 13:53:00 Uhr
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"  
Mitglied: Fluxx79
Fluxx79 03.07.2015 um 13:52:24 Uhr
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
Mitglied: Snowman25
Lösung Snowman25 03.07.2015 aktualisiert um 15:14:20 Uhr
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"  
Mitglied: Fluxx79
Fluxx79 03.07.2015 um 14:29:02 Uhr
Goto Top
Hallo Snowman

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

Beste Grüsse
Fluxx
Mitglied: Snowman25
Snowman25 03.07.2015 um 15:14:08 Uhr
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)
Mitglied: Endoro
Endoro 03.07.2015 um 20:03:13 Uhr
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 03.07.2015 aktualisiert um 20:12:17 Uhr
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
Mitglied: bastla
bastla 03.07.2015 um 23:17:36 Uhr
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]