Ob Hobby- oder Berufsfotograf, früher oder später müssen alle Bilder von der Kamera auf den Computer. Jeder hat da so seinen eigenen Workflow. Und umso mehr Bilder man produziert um so länger dauert dieser Workflow. Ganz besonders dann, wenn man mit RAW-Dateien arbeitet und für den Import aufgrund von “Sonderwünschen” mehrere Programme nacheinander benutzt. Eine Lösung ist hier die Batchverarbeitung von Komandozeilenbefehlen, um den Workflow zu automatisieren. Batch-Dateien enthalten Kommandozeilenbefehle und führen sie nacheinander aus. Ich möchte an dieser Stelle ein Batch-Script vorstellen, welches ich mir vor einiger Zeit geschrieben habe, um meinen Workflow zu vereinfachen.
Mein Workflow
Ich fotografiere in Canons Rohdatenformat CR2 und mache meine Nachbearbeitungen in Adobes DNG Format. Bei der Nachbearbeitung setze ich auf das, für Adobe Photoshop und Adobe Photoshop Elements frei verfügbar Adobe Camera Raw (ACR). Ich konvertiere die RAW-Dateien der Kamera nach DNG, da ich alle Einstellungen, die in ACR gemacht werden, gern nicht-destruktiv innerhalb der Datei gespeichert haben möchte. Dazu verwende ich den Adobe-DNG-Converter. Zusätzlich werden alle Dateien mit exiftool in das Format “YYYY-MM-DD hh-mm-ss-x” umbenannt. Der folgende Screenshot verdeutlicht den gesamten Ablauf:
Nun möchte ich nicht jedes mal von Hand alle Bilder kopieren, umbenennen und umwandeln. Aus diesem Grund habe ich mir eine Batch-Datei geschrieben. Das spart Zeit und Nerven (gerade wenn man es mehrmals per Hand gemacht hat).
Batch-Verarbeitung
Mein Batch-Verarbeitung gliedert sich in 4 Abschnitte.
- Das Kopieren der Fotos (JPG und CR2) in ein von mir angelegtes Verzeichnis.
- Das Umbenennen der Dateien mit exiftool. (Als ich die Bilder noch von Hand umbenannt habe, nutze ich XnView welches ich an dieser Stelle empfehlen kann.)
- Konvertieren aller CR2-Dateien in DNG-Dateien.
- Aufräumen – löschen der CR2-Dateien und verschieben in den Unterordner “raw”.
Die Gesamte-Batch-Datei kann am Ende des Artikels heruntergeladen werden. Ich werde den Code im folgenden mit ein paar Sätzen näher Erläutern.
@REM ** variablen definieren ******************************** @REM @set exiftool=D:\weitereProgramme\exiftoolgui\exiftool.exe @set adobe_dng=C:\Program Files\Adobe\Adobe DNG Converter.exe @set flash_path=G:\DCIM\100CANON @set eos_path=F:\bilder\Digicam 09\EOS @REM
Vor dem ersten Arbeitsschritt werden einige Variablen definiert. Es wird definiert, wo exiftool und Adobe-DNG installiert sind, von wo kopiert werden soll (flash_path) und wohin kopiert werden soll (eos_path).
HINWEIS: @REM ermöglicht das Setzen von Kommentaren und Leerzeilen. Mit @set werden die Variablen definiert. Das vorangestellte @-Zeichen bewirkt, dass der Befehl nicht noch einmal auf der Kommandozeile angezeigt wird.
@REM ** aufgaben abarbeiten ************************************ @REM :copy @REM Dateien von der Karte ins EOS vereichnis verschieben @echo Kopieren der Dateien von "%flash_path%" nach "%eos_path%". @xcopy "%flash_path%\*.*" "%eos_path%" /D @if errorlevel 1 goto error @echo ... Dateien wurde kopiert. ... @echo. @echo.
Es folgt der erste Arbeitsschritt. Er wird mit der Sprungmarke “copy” eingeleitet. Mit dem Befehl xcopy werden alle Dateien vom Flash-Speicher auf den lokalen Speicherort kopiert. In der darauf folgenden Zeile wird festgelegt, dass an der Sprungmarke “error” weitergemacht wird, falls ein Fehler beim Kopieren auftritt.
:exif @REM exiftool umbenennen der Dateien @echo Umbenennen der Dateien @%exiftool% "-filename<createdate" -d "%%Y-%%m-%%d %%H-%%M-%%S%%%%+c.%%%%e" EOS @if errorlevel 1 goto error @echo ... Dateien wurden umbenannt. ... @echo. @echo.
Nun werden die Bilder anhand ihrer EXIF-Daten umbenannt. Dazu wird mit “%exiftool%” der gleichnamige Befehl aufgerufen. Mit den nachfolgenden Parametern wird die Umwandlung des Dateinamens in die Datum-Uhrzeit-Kombination herbeigeführt. Zu beachten ist hierbei, dass das %-Zeichen in der Batchverarbeitung einen besonderen Stellenwert hat, und deshalb “geschützt” werden muss. Deshalb steht für jedes “%”, das als Parameter an exiftool übergeben wird ein “%%”, also ein doppeltes Prozentzeichen.
:dng
@REM adobe DNG-Converter
@echo Umwandeln in DNG-Dateien
For %%a in ("%eos_path%\*.CR2") do "%adobe_dng%" -d "%eos_path%" "%%a"
@if errorlevel 1 goto error
@echo ... Dateien wurden in DNG konvertiert. ...
@echo.
@echo.
Im dritten Arbeitsschritt werden die Dateien mit dem DNG-Converter konvertiert. Es gibt einige Feineinstellungen, die meines Erachtens aus den Einstellungen des GUI-Dialogs übernommen werden (Thumbgröße, Optimierung für eine ACR Version, …). Mittels “For”-Schleife werden alle Dateien nacheinander konvertiert.
:clean @REM loeschen der CR2-Dateien @echo Löschen der CR2 Dateien in "%eos_path%". @del "%eos_path%\*.CR2" @echo. @echo. @REM verschieben der dng-Dateien @echo Verschieben der dng Dateien nach ".\raw". @move "%eos_path%\*.dng" "%eos_path%\raw" @echo. @echo. @REM :end @echo. @echo. @echo .................................. @echo . Alle Aufgaben abgeschlossen . @echo .................................. @goto close :error @echo. @echo. @echo .................................. @echo . Es ist ein FEHLER aufgetreten! . @echo .................................. :close @pause
Im letzten Arbeitsschritt werden überflüssige Dateien gelöscht (die RAW-Dateien der Kamera), und die DNG-Dateien werden in den Unterordner “raw” verschoben. Danach läuft die Abarbeitung über die Sprungmarke “end”, die den Abschluss der Abarbeitung verkündet. Sollte es zwischendurch zu einem Fehler gekommen sein, wird an die Sprungmarke “error” gesprungen, die nichts weiter tut als auf einen Fehler hinzuweisen. Das “@pause” in der letzten Zeile bewirkt, dass das Konsolenfenster geöffnet bleibt nachdem die Abarbeitung abgeschlossen ist.
Die Datei habe ich als “2_renameAndConvert.bat” abgelegt. Nun muss ich jeweils nur noch einmal einen Doppelklick ausführen um alle Arbeitsschritte abzuarbeiten.

Ich habe mir noch zwei zusätzliche Batch-Dateien erstellt. “1_makeEOS.bat” erstellt mir jeweils automatisch das Zielverzeichnis “EOS” mit dem Unterordner “raw”. Wenn ich mit den Nachbearbeitungen der RAW-Bilder fertig bin wird der “EOS” Ordner umbenannt und bekommt einen aussagekräftigeren Namen. “3_clearFlash.bat” löscht den Inhalt des Flash-Sticks.
Download
DNG-Batch-Scripte zum freien Download
Die Dateien können heruntergeladen, genutzt und in beliebiger Weise modifiziert werden. Bei Weiterverbreitung ist keine Namensnennung notwendig – drüber freuen würde ich mich trotzdem. Anmerkungen und Erweiterung dürfen gern per Kommentar oder E-Mail weitergegeben werden.
Zusammenfassung
Die Batch-Verarbeitung hat sicher auch ihre Nachteile, aber sie lässt sich gerade für solche kleinen Sachen sehr flexibel nutzen. Sie ist gerade dann zu empfehlen, wenn man nicht mit den automatischen Importfunktionen größerer Programme zufrieden ist oder diese sich nicht genau genug anpassen lassen. Mit nur wenigen Suchanfragen lässt sich Material und Anleitungen zu den benötigten Kommandozeilenbefehlen finden. Etwas länger dauert dann meistens das Testen. Die gesamte Programmierung (inklusive Testen) hat mich circa 4-5 Stunden gekostet, wobei ich von den benötigten Kommandozeilenbefehlen bisher keine Ahnung hatte. Die Fehlerquelle, die am meisten Zeit gefressen hat, war die doppelte Prozentzeichennutzung beim exiftool.
Ein Problem bei meinem Batchprozess, sind wechselnden Laufwerksbezeichnungen. Werden zusätzliche Laufwerke eingebunden, wie etwa eine externe Festplatte, kann es dazu kommen, dass sich die Laufwerkswerkskennzeichnung der SD-Karte z.B. von “G:” nach “H:” ändert. In dem Fall bricht das Script ab und man muss per Hand entweder die Laufwerkskennzeichnung oder seine Batch-Datei ändern.
Wenn ich mal Zeit habe (haha) werde ich mich mal ransetzen und das Problem mit Java oder C# angehen. Schließlich gibt es vieles, was man mit einer Standalone-Application besser realisieren könnte. Was mir hier wirklich fehlt, ist beispielsweise ein Fortschrittsbalken und die Möglichkeit die Verzeichnisse komfortabel auszuwählen. Außerdem wäre eine Java-Anwendung plattformunabhängiger.
