65883
Goto Top

Files bzw. Fotos per Batch kopieren

Ich verschiebe meine geschossenen Fotos von der Speicherkarte auf meiner Platte und sortiere sie chronologisch. Sprich ... ein Foto vom 01.12.2010 landet dann auf der Platte im Verzeichnispfad

D:\ 2010 \ 12 \ 01

Noch nicht vorhandene Verzeichnisse muss ich neu anlegen und die Fotos per Hand in die Verzeichnisse verschieben. Bei vielen Bildern gleichen Datums ist das keine all zu große Arbeit.

Haben sich aber viele Fotos aus verschiedenen Tagen auf der Speicherkarte angesammelt, beginnt die Sisyphus-Arbeit immer wieder von Vorne.

Leider habe ich noch nichts fertiges gefunden.

Ein Grund, das mal als Batch zu automatisieren.

Ist so was überhaupt per Batch möglich(?), denn der Batch müsste auch prüfen können, ob ein Verzeichnis/eine Datei schon vorhanden ist.

Content-Key: 156121

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

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

Member: bastla
bastla Dec 01, 2010 at 10:37:44 (UTC)
Goto Top
Hallo truecolor!

Etwa so (ungetestet):
@echo off & setlocal
set "Quelle=E:\DCIM"  
set "Ziel=D:\"  

for %%i in ("%Quelle%\*.jpg") do for /f "tokens=1-3 delims=. " %%a in ("%%~ti") do (  
    echo md "%Ziel%%%c\%%b\%%a" 2>nul  
    echo if not exist "%Ziel%%%c\%%b\%%a\%%~nxi" (move "%%i" "%Ziel%%%c\%%b\%%a\")  
)
pause
Das Erstellen der Zielverzeichnisse und die Verschiebebefehle werden (zum Testen und solange das "echo" in den Zeilen 6 und 7 steht) nur angezeigt ...
denn der Batch müsste auch prüfen können, ob ein Verzeichnis/eine Datei schon vorhanden ist.
Vorhande Verzeichnisse sind kein Problem (die Fehlermeldung beim Versuch, ein solches Verzeichnis nochmals zu erstellen, wird einfach mit "2>nul" unterdrückt). Gleichnamige Dateien würden nicht übertragen, sondern es könnte durch Hinzufügen von
<codetype="plain"> else (echo Datei "%Ziel%%%c\%%b\%%a\%%~nxi" bereits vorhanden!)
zur Zeile 7 eine entsprechende Meldung erzeugt werden.

Zu beachten wäre noch, dass die Angabe des Zielpfades (in Zeile 3) mit "\" enden muss.

Grüße
bastla
Member: laster
laster Dec 01, 2010 at 10:47:35 (UTC)
Goto Top
Hallo,

zuerst musst Du aus dem Dateinamen des Fotos die Datumsinformationen extrahieren.
Hier ein Beispiel für die Extraktion aus %date%:
echo %date%
md %date:~-4%\%date:~-7,2%\%date:~-10,2%
Der erste Befehl gibt 01.12.2010 zurück.
Der zweite Befehl erzeugt dann die von Dir gewünschte Verzeichnisstruktur.
Nun musst Du noch aus Deinen Fotodateien die Datumsfelder extrahieren...
Das ganze in eine Batchdatei:
cd /d %FotoQuelle%
dir /b > liste.txt
for /F %%i IN (liste.txt) do call :PROC1 %%i
exit
:PROC1
echo [%1]
set ZIEL=%1:~-4%\%1:~-7,2%\%1:~-10,2%
md %ZIEL%
copy %1 %ZIEL%
goto :EOF
.. so ungefähr könntest Du es machen.

viel Erfolg und Grüße
LS
Mitglied: 65883
65883 Dec 01, 2010 at 11:39:15 (UTC)
Goto Top
Hallo bastla und laster,

also erst mal Respekt, dass ich so schnell eine Antwort bekommen habe.

Dann auch noch zwei Lösungen ... superklasse.

bastla´s Lösung hab ich schon getestet und bin zu 100% zufrieden.

laster´s Lösung führt zum gleichen Ziel, wenn er auch mit Hilfe einer DIR-Datei arbeitet.

Aber wie so oft ist das Ziel wichtig und weniger der Weg dorthin

Ihr habt mir beide viel Arbeit erspart.

Vielen Dank euch Beiden.