Dateien rekursiv kopieren und Datum in Dateiname einfügen
Habe mich gerade hier angemeldet, weil ich glaube, hier Hilfe zu bekommen.
Frage aktualisiert (15.02. 17:30)
Mein Ziel ist es auf Win7:
- alle Dateien einer definierten Quelle, die innerhalb des letzten Tages geändert wurden oder neu sind
- mit Verzeichnisstruktur auf ein Ziel zu kopieren
- und die Dateinamen umzubenennen.
aus D:\Quelle\*.* soll E:\Ziel\20140215-*.* werden (Datum dem eigentlichen Dateinamen vorangestellt)
Mein Ansatz war zuerst, XCOPY und REN zu verknüpfen:
@echo off
for /f "delims=" %%a in ('wmic OS Get localdatetime ^|find "."') do set dt=%%a
set YYYY=%dt:~0,4%
set MM=%dt:~4,2%
set DD=%dt:~6,2%
set stamp=%YYYY%-%MM%-%DD%
set source="D:\Quelle\*.*"
set destination="E:\Ziel"
xcopy %source% %destination% /E
Wie übergebe ich aber die gerade kopierten Dateien im Ziel an:
ren %%~dpnxi %stamp%-*.*
Zweiter Ansatz:
for %%i in ("%source%*.*") do for /f "delims=" %%a in ("%%~nxi") do (xcopy "%%i" "%destination%%stamp%-%%a" /E)
Probleme hierbei: ist nicht rekursiv, nimmt also keine Unterverzeichnisse. Außerdem erscheint bei jeder Datei ein Prompt, ob Datei oder Verzeichnis.
Kann mir denn keiner weiterhelfen?
Danke,
Franc
Frage aktualisiert (15.02. 17:30)
Mein Ziel ist es auf Win7:
- alle Dateien einer definierten Quelle, die innerhalb des letzten Tages geändert wurden oder neu sind
- mit Verzeichnisstruktur auf ein Ziel zu kopieren
- und die Dateinamen umzubenennen.
aus D:\Quelle\*.* soll E:\Ziel\20140215-*.* werden (Datum dem eigentlichen Dateinamen vorangestellt)
Mein Ansatz war zuerst, XCOPY und REN zu verknüpfen:
@echo off
for /f "delims=" %%a in ('wmic OS Get localdatetime ^|find "."') do set dt=%%a
set YYYY=%dt:~0,4%
set MM=%dt:~4,2%
set DD=%dt:~6,2%
set stamp=%YYYY%-%MM%-%DD%
set source="D:\Quelle\*.*"
set destination="E:\Ziel"
xcopy %source% %destination% /E
Wie übergebe ich aber die gerade kopierten Dateien im Ziel an:
ren %%~dpnxi %stamp%-*.*
Zweiter Ansatz:
for %%i in ("%source%*.*") do for /f "delims=" %%a in ("%%~nxi") do (xcopy "%%i" "%destination%%stamp%-%%a" /E)
Probleme hierbei: ist nicht rekursiv, nimmt also keine Unterverzeichnisse. Außerdem erscheint bei jeder Datei ein Prompt, ob Datei oder Verzeichnis.
Kann mir denn keiner weiterhelfen?
Danke,
Franc
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 230047
Url: https://administrator.de/forum/dateien-rekursiv-kopieren-und-datum-in-dateiname-einfuegen-230047.html
Ausgedruckt am: 09.05.2025 um 18:05 Uhr
2 Kommentare
Neuester Kommentar
Hallo Franc79 und willkommen im Forum!
Das könnte etwa so gehen:
Grüße
bastla
Das könnte etwa so gehen:
@echo off & setlocal
set "source=D:\Quelle"
set "destination=E:\Ziel"
for /f "delims=" %%a in ('wmic OS Get localdatetime ^|find "."') do set dt=%%a
set YYYY=%dt:~0,4%
set MM=%dt:~4,2%
set DD=%dt:~6,2%
set stamp=%YYYY%-%MM%-%DD%
for /f "delims=" %%i in ('dir /s/b/a-d "%source%"') do call :ProcessFile "%%i"
goto :eof
:ProcessFile
set "DestPath=%~dp1"
call set "DestPath=%%DestPath:*%source%=%destination%%%"
xcopy /y %1 "%DestPath%%stamp%-%~nx1*">nul && echo %1 || echo Fehler bei %1
goto :eof
bastla