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

Ausgedruckt am: 28.03.2024 um 11:03 Uhr

Mitglied: Skyemugen
Skyemugen 10.05.2011 um 13:50:48 Uhr
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é
Mitglied: kugman
kugman 10.05.2011 um 13:53:01 Uhr
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\  
Mitglied: kugman
kugman 10.05.2011 um 13:54:26 Uhr
Goto Top
genau das war der Haken... ich sollte vielleicht mal wieder schlafen...
Mitglied: Skyemugen
Skyemugen 10.05.2011 um 13:56:10 Uhr
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é
Mitglied: bastla
bastla 10.05.2011, aktualisiert am 25.10.2012 um 11:15:07 Uhr
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
Mitglied: Skyemugen
Skyemugen 10.05.2011 um 15:24:04 Uhr
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é
Mitglied: kugman
kugman 10.05.2011 um 16:47:07 Uhr
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\  
	)
Mitglied: mantus
mantus 24.10.2011 um 20:12:42 Uhr
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?
Mitglied: bastla
bastla 24.10.2011 um 21:44:10 Uhr
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
Mitglied: moltova
moltova 22.07.2013 um 09:29:58 Uhr
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
Mitglied: bastla
bastla 22.07.2013 um 21:31:20 Uhr
Goto Top
Hallo moltova!

Schau Dir mal diesen Beitrag an ...

Grüße
bastla