Dateien mit Datum versehen und xcopy
Hallo liebe Forumsgemeinde
Ich möchte gern alle Bilder aus einem Ordner in einen anderen Ordner mitsamt der Ordnerstruktur kopieren. Dabei sollen die Bilder zusätzlich zu ihrem eigentlichen Namen mit einem Datum benannt werden.
xcopy übernimmt das kopieren recht unkompliziert.
xcopy C:\Quelle\*.jpg C:\Ziel\*.jpg /E /Y
Wenn ich jedoch die Dateien mit dem Datum versehen will:
xcopy C:\Quelle\*.jpg C:\Ziel\%date:~-10,2%_%date:~-7,2%_%date:~-4%*.jpg /E /Y
erhalte ich immer folgende Fehlermeldung:
"Zweiter Dateiname konnte nicht so erweitert werden, dass er zum ersten passt."
xcopy fügt das Datum dem Dateinamen nicht hinzu, sonder überschreibt den alten.
gibt es hierfür eventuell eine Lösung?
Über Antworten würde ich mich sehr freuen.
Ich möchte gern alle Bilder aus einem Ordner in einen anderen Ordner mitsamt der Ordnerstruktur kopieren. Dabei sollen die Bilder zusätzlich zu ihrem eigentlichen Namen mit einem Datum benannt werden.
xcopy übernimmt das kopieren recht unkompliziert.
xcopy C:\Quelle\*.jpg C:\Ziel\*.jpg /E /Y
Wenn ich jedoch die Dateien mit dem Datum versehen will:
xcopy C:\Quelle\*.jpg C:\Ziel\%date:~-10,2%_%date:~-7,2%_%date:~-4%*.jpg /E /Y
erhalte ich immer folgende Fehlermeldung:
"Zweiter Dateiname konnte nicht so erweitert werden, dass er zum ersten passt."
xcopy fügt das Datum dem Dateinamen nicht hinzu, sonder überschreibt den alten.
gibt es hierfür eventuell eine Lösung?
Über Antworten würde ich mich sehr freuen.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 168584
Url: https://administrator.de/forum/dateien-mit-datum-versehen-und-xcopy-168584.html
Ausgedruckt am: 23.01.2025 um 23:01 Uhr
13 Kommentare
Neuester Kommentar
Aloha und willkommen im Forum,
du benötigst dafür eine
Solltest du Probleme oder Fragen dann dazu noch haben, einfach melden.
greetz André
du benötigst dafür eine
for
-Schleife, wenn du fit bist, kannst du dir mit Hilfe von for /?
und Tutorial zur FOR-Schleife die Sache ganz einfach selbst hinzaubern Solltest du Probleme oder Fragen dann dazu noch haben, einfach melden.
greetz André
moin,
Gruß
@ Skye - oda so...
wobei das ganze natürlich ziemlich schräg ist..
*.jpg
C:\Ziel\%date:~-10,2%_%date:~-7,2%_%date:~-4%*.jpg
kann ja nicht, du mußt eine Schleife drumrum zimmern.C:\Ziel\%date:~-10,2%_%date:~-7,2%_%date:~-4%*.jpg
for /R C:\Quelle\ %a in (*.jpg) do echo xcopy %a.jpg C:\Ziel\%date:~-10,2%_%date:~-7,2%_%date:~-4%%~nxa /E /Y
Gruß
edit
@ Skye - oda so...
wobei das ganze natürlich ziemlich schräg ist..
- läuft diese Zeile an zwei verschiedenen Tagen, gibts doppelte gemoppelte, an drei Tagen usw usf.....
[1/2OT]
... da kann man schonmal als alter einzeller nen einzeiler opfern
[/1/2OT]
Zitat von @Skyemugen:
Aloha T-Mo,
was' mit dir heute los? Nimmst gleich die Arbeit ab und das bei einem Einzeiler? Tze tze tze, so kenne ich dich gar nicht
*fg* - so bleibt da die Lernerfahrung für den TE?
greetz André
Aloha T-Mo,
was' mit dir heute los? Nimmst gleich die Arbeit ab und das bei einem Einzeiler? Tze tze tze, so kenne ich dich gar nicht
*fg* - so bleibt da die Lernerfahrung für den TE?
greetz André
- Hallo
- incl. Beispiel, was er bereits hat
- kein @echo off
- kein linksfalschfehler
... da kann man schonmal als alter einzeller nen einzeiler opfern
[/1/2OT]
Hallo LePimpon!
Die Zeile war auch zur Direkteingabe in der CMD-Shell gedacht - wenn Du sie in einem Batch verwenden willst, musst Du die Prozentzeichen der Laufvariablen verdoppeln:
Solange das "
Was es übrigens mit "
Grüße
bastla
P.S.: Das Datum würde ich im Zweifelsfall "JJJJ-MM-TT" schreiben ...
Die Zeile war auch zur Direkteingabe in der CMD-Shell gedacht - wenn Du sie in einem Batch verwenden willst, musst Du die Prozentzeichen der Laufvariablen verdoppeln:
@echo off & setlocal
set "Quelle=C:\Quelle"
set "Ziel=C:\Ziel"
set "Typ=jpg"
set "Datum=%date:~-10,2%_%date:~-7,2%_%date:~-4%"
for /R "%Quelle%" %%a in (*.%Typ%) do echo xcopy "%%a" "%Ziel%\%Datum%_%%~nxa*" /Y
echo
" in der letzten Zeile steht, wird nur der Kopierbefehl angezeigt, aber nicht ausgeführt ...Was es übrigens mit "
%%~nxa
" (Kurzform für "%%~na%%~xa
") auf sich hat, erfährst Du mit "for /?
" (falls Du lange genug durchhältst ) ...Grüße
bastla
P.S.: Das Datum würde ich im Zweifelsfall "JJJJ-MM-TT" schreiben ...
Hallo LePimpon!
Das sollte sich auch noch hinbekommen lassen:
Da hier eine String-Ersetzung im Dateipfad erfolgt (%Quelle% wird durch %Ziel% ersetzt - siehe dazu "
Diesem Unterprogramm wird auch der komplette Dateipfad "%%a" übergeben. Da sich das Unterprogramm wie ein weiterer Batch verhält, kommt dort die übergebene Variable "%%a" als Parameter "%1" an.
Grüße
bastla
Das sollte sich auch noch hinbekommen lassen:
@echo off & setlocal
set "Quelle=C:\Quelle"
set "Ziel=C:\Ziel"
set "Typ=jpg"
set "Datum=%date:~-4%_%date:~-7,2%_%date:~-10,2%_"
for /R "%Quelle%" %%a in (*.%Typ%) do set "Quellpfad=%%~dpa" & call :ProcessFile "%%a"
goto :eof
:ProcessFile
call set "Zielpfad=%%Quellpfad:%Quelle%=%Ziel%%%"
echo xcopy %1 "%Zielpfad%%Datum%_%~nx1*" /EY
goto :eof
set /?
"), kann nicht mit der Schleifenvariablen (%%a) gearbeitet werden, sondern es muss eine "gewöhnliche" Variable (%Quellpfad%) verwendet werden. Diese wird in der Schleife erstellt und dann in einem Unterprogramm verarbeitet.Diesem Unterprogramm wird auch der komplette Dateipfad "%%a" übergeben. Da sich das Unterprogramm wie ein weiterer Batch verhält, kommt dort die übergebene Variable "%%a" als Parameter "%1" an.
Grüße
bastla