kugman
Goto Top

Dateien nach dem Erstellungsdatum in Ordner verschieben

gegeben: 12000 Fotos - alle hübsch in einem Ordner
gesucht: Lösung um per Batch die Bilder entsprechend ihres Erstelldatums in einen eigenen Ordner zu stecken

Hallo zusammen,

habe nach dem Plattencrash meiner Sicherungsplatte(!) für Bilder folgendes Problem. Ich habe zwar alle Bilder wieder, aber die sind nun alle hübsch in einem einzigen Ordner. Meine Ordnerstruktur bisher war z.Bsp:
2011
  |-Januar
       | - Bilder vom Januar
   |-Februar
       | - Bilder vom Februar


Mir würde es jetzt fürs erste ja schon reichen, wenn das Batch die Dateien in neue Ordner mit dem Namen YYYY-MM-DD steckt.

kann mir da jemand den richtigen Denkanstoß dazu liefern? Das wäre nett.

Vielen Dank schon mal

liebe Grüße,

Markus

Nachtrag:

ich glaub ich bin zu blöd:

for %i in (e:\gerettet\*.jpg) do @for /f "tokens=1-3 delims=. " %a in ("%~ti") do @xcopy "%~fi" c:\zielordner\%c-%b-%a\ /e /y /i  

Das funktioniert wunderbar direkt auf dem CMD - aber ich schaffs nicht, das ganze in der Batch zum laufen zu bekommen. ich weiss schon, dass ich aus %i %%i und aus %a %%a machen muss, aber dennoch funktioniert das nicht.

Any hints?

Content-Key: 165976

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

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

Member: Skyemugen
Skyemugen May 10, 2011 at 11:50:48 (UTC)
Goto Top
Aloha,

also
for %%i in (e:\test\test12\humbug\*.wav) do @for /f "tokens=1-3 delims=. " %%a in ("%%~ti") do @xcopy "%%~fi" c:\zielordner\%%c-%%b-%%a\ /e /y /i
funktioniert bei mir wunderbar ...

hast du bei %~ti und %~fi auch an die doppelten Prozentzeichen gedacht?

greetz André
Member: kugman
kugman May 10, 2011 at 11:53:01 (UTC)
Goto Top
habs hinbekommen.


set "quelle=e:\gerettet"  
set "ziel=c:\zielordner"  

for %%i in (%quelle%\*.jpg) do @for /f "tokens=1-3 delims=. " %%a in ("%%~ti") do @move "%%~fi" "%ziel%"\%%c-%%b-%%a\  
Member: kugman
kugman May 10, 2011 at 11:54:26 (UTC)
Goto Top
genau das war der Haken... ich sollte vielleicht mal wieder schlafen...
Member: Skyemugen
Skyemugen May 10, 2011 at 11:56:10 (UTC)
Goto Top
Aloha,

moved move eigentlich bei Verzeichnissen, die noch nicht existieren? (xcopy legt die ja an, wenn sie fehlen) ... Was sagt move eigentlich zum "Pfad"\Verzeichnis? ...

greetz André
Member: bastla
bastla May 10, 2011, updated at Oct 25, 2012 at 09:15:07 (UTC)
Goto Top
@ Skyemugen
Berechtigte Fragen, die ich mit
nein
und
nix weiter (auch wenn ich die Zollzeichen grundsätzlich außenrum anbringe)
beantworten würde ... face-wink

Grüße
bastla
Member: Skyemugen
Skyemugen May 10, 2011 at 13:24:04 (UTC)
Goto Top
Aloha bastla,

Punkt 1 würde ich auch so beantworten *gg* aber Punkt 2 würde ich widersprechen, zumindest bei Windows 7 hat er sich bei solchen Eigenarten schon anstößig verhalten face-wink

aber eigentlich waren die Fragen auch nur für den TE gedacht, um ihn auf diese Dinge aufmerksam zu machen :-P

greetz André
Member: kugman
kugman May 10, 2011 at 14:47:07 (UTC)
Goto Top
Hallo Skyemugen

ist angekommen - danke face-smile

wen's interessiert:

set "quelle=e:\gerettet"   
set "ziel=c:\zielordner"   
for %%i in (%quelle%\*.jpg) do @for /f "tokens=1-3 delims=. " %%a in ("%%~ti") do (  
	if not exist "%ziel%"\%%c-%%b-%%a\ md "%ziel%"\%%c-%%b-%%a\  
	@move "%%~fi" "%ziel%"\%%c-%%b-%%a\  
	)
Member: mantus
mantus Oct 24, 2011 at 18:12:42 (UTC)
Goto Top
Moin!

Also ich bekomme es so nicht zum laufen.
Hänge dort in der Loop fest und er kopiert nichts.

Wie hat das bei euch geklappt?
Member: bastla
bastla Oct 24, 2011 at 19:44:10 (UTC)
Goto Top
Hallo mantus!

Es wäre hilfreich, wenn Du direkt in der CMD-Shell testest (ein "echo off" vorweg sollte es dabei auch noch nicht geben) und so berichten könntest, welche Anweisung noch wie ausgeführt wird ...

Ansonsten noch eine Variante (da Du ja das Erstellungsdatum verwenden willst):
@echo off & setlocal
set "quelle=e:\gerettet"  
set "ziel=c:\zielordner"  
set "ext=jpg"  

pushd "%quelle%"  
for /f "tokens=1-5* delims=. " %%a in ('dir /tc /-c *.%ext% 2^>nul ^|findstr /i /e "\.%ext%"') do (  
    echo md "%ziel%\%%c-%%b-%%a" 2>nul  
    echo move "%%f" "%ziel%\%%c-%%b-%%a\"  
)
popd
Die beiden "echo" in der Schleife sollen ein gefahrloses Testen ermöglichen, da so die entsprechenden "md"- und "move"-Befehle nur angezeigt werden ...

Wenn übrigens auch Unterverzeichnisse mit erfasst werden sollen, dann etwa so:
@echo off & setlocal
set "quelle=e:\gerettet"  
set "ziel=c:\zielordner"  
set "ext=jpg"  

for /f "delims=" %%i in ('dir /s /b /ad "%quelle%"') do (  
    pushd "%%i"  
    for /f "tokens=1-5* delims=. " %%a in ('dir /tc /-c *.%ext% 2^>nul ^|findstr /i /e "\.%ext%"') do (  
        echo md "%ziel%\%%c-%%b-%%a" 2>nul  
        echo move "%%f" "%ziel%\%%c-%%b-%%a\"  
    )
    popd
)
In beiden (ungetesteten) Varianten zu beachten: Gleichnamige Dateien in einem Zielordner werden (bzw würden nach dem Entfernen der "echo") kommentarlos überschrieben!

Grüße
bastla
Member: moltova
moltova Jul 22, 2013 at 07:29:58 (UTC)
Goto Top
Hi, der Beitrag ist zwar schon älter, aber dennoch genau das was ich gerade suche! Dennoch habe ich ein kleines Problem, ich möchte aus einem Bilderordner alle Bilder, automatisch in Ordner nach Datum sortieren lassen. Am liebsten nach dem Monat an dem es aufgenommen worden ist. Würde ja mit den letzten Skripten klappen. Problem ist aber, das der Skript auf das ERSTELLUNGSDATUM zugreift. gibt es eine Möglichkeit: auf das AUFNAHMEDATUM der Datei zuzugreifen?

Ich habe meine Bildersammlung kopiert und dadurch hat sich ja das Erstellungsdatum geändert aber nicht das Aufnahmedatum. Oder geht das nur mit vbs?

Matthias
Member: bastla
bastla Jul 22, 2013 at 19:31:20 (UTC)
Goto Top
Hallo moltova!

Schau Dir mal diesen Beitrag an ...

Grüße
bastla