Suche

ExifTool mit Power Automate Desktop automatisieren

Themen

Exif Dateiformat

Wer viel mit Bildern arbeitet – sei es als Fotograf, Daten-Ingenieur oder jemand, der KI-Modelle mit Bilddaten trainiert – weiß: Ein Bild ist mehr als nur die sichtbaren Pixel. Unter der Oberfläche steckt eine zweite, oft unterschätzte Informationsschicht – die EXIF-Daten. EXIF steht für „Exchangeable Image File Format“ und beschreibt die Metadaten, die beim Fotografieren automatisch in der Bilddatei mitgespeichert werden. Dazu gehören Infos wie Datum, Uhrzeit, Kamera-Modell, Belichtungseinstellungen, GPS-Koordinaten und vieles mehr.

Und ich kann dir sagen: Diese EXIF-Daten sind wahnsinnig nützlich. Nicht nur um die Bilder besser zu verstehen, sondern auch um automatisierte Prozesse aufzusetzen. Wenn du zum Beispiel in einem Flow nur die neuesten Bilder analysieren willst – dann filterst du ganz einfach über das Aufnahmedatum im EXIF. Oder du willst Bilder geobasierend sortieren oder clustern – auch kein Problem, wenn du Zugriff auf die GPS-Daten hast.

Was früher nur Profis im RAW-Converter interessiert hat, ist heute für uns Entwickler Gold wert. EXIF-Daten liefern Kontext – und Kontext ist in jeder datengetriebenen Anwendung der Schlüssel.

Für mich persönlich sind EXIF-Daten mittlerweile unverzichtbar – gerade wenn es um meine Arbeit mit KI-generierten Inhalten geht. Ich archiviere damit automatisiert alle Bilder, die ich mit unterschiedlichen Modellen erstelle und kann dadurch meine Projekte viel besser strukturieren und nachvollziehen. Gerade bei größeren Datenmengen ist das Gold wert – denn ohne eine klare Ordnung versinkst du schnell im Chaos.

Mit einem sauberen EXIF-Workflow weiß ich immer, welches Bild zu welchem Projekt gehört, wann es erstellt wurde und auf welchen Parametern es basiert. Das spart nicht nur Zeit, sondern sorgt auch dafür, dass ich effizient weiterarbeiten kann – egal ob ich neue Trainingsdaten zusammenstelle oder Ergebnisse dokumentiere.

Und ganz ehrlich: Das kann jedem helfen, der mit Bildern arbeitet. Egal ob du Fotos mit dem Smartphone schießt, eine Kamera nutzt oder KI-Modelle wie DALL·E oder Midjourney einsetzt – mit EXIF holst du das Beste aus deinen Daten raus und schaffst dir die Struktur, die du brauchst, um nicht den Überblick zu verlieren.

So ist ein EXIF-File aufgebaut

Ein EXIF-File ist kein eigenes Dateiformat, sondern ein Abschnitt innerhalb einer Bilddatei – meistens bei JPEGs, manchmal auch in TIFFs. Dieser Bereich enthält strukturierte Metadaten in Form von sogenannten „Tags“. Jeder dieser Tags liefert eine bestimmte Information – zum Beispiel:

  • Datum und Uhrzeit der Aufnahme (DateTimeOriginal)

  • Kamera-Hersteller und Modell (Make, Model)

  • Belichtungseinstellungen wie ISO, Blende, Verschlusszeit

  • Bildausrichtung, Auflösung, Farbraum

  • GPS-Daten mit Breiten- und Längengrad

Technisch ist das Ganze wie eine strukturierte Tabelle innerhalb der Bilddatei organisiert – eine Art Key-Value-System, das viele Programme direkt auslesen können.

Aber: Inzwischen sind EXIF-Daten längst nicht mehr nur für klassische Kameras gedacht. Mit der zunehmenden Nutzung von KI-Bildgeneratoren wie Midjourney, DALL·E oder Stable Diffusion haben sich die Inhalte erweitert. Immer mehr Tools schreiben zusätzliche Informationen in die EXIF-Daten – etwa das verwendete Prompt, das KI-Modell, Versionen, Sampler oder Seeds. Diese Daten werden oft als sogenannte „XMP“ oder „MakerNotes“ angehängt, teilweise auch in benutzerdefinierten Feldern. Auch wenn das nicht standardisiert ist, erkennt man daran oft, wie ein KI-Bild entstanden ist.

Für uns Entwickler bedeutet das: EXIF-Daten sind nicht mehr nur eine Spielerei für Fotografen – sie sind ein wichtiges Werkzeug, um KI-generierte Inhalte zu dokumentieren, nachzuvollziehen und automatisiert zu verarbeiten. Gerade wenn du viele Bilder erzeugst und archivieren willst, sind diese Zusatzinfos enorm wertvoll.

ExifTool Version Number         : 13.30
File Name                       : ComfyUI_1_2025-06-22_4d2a33b3-df1d-4f0a-84c5-f9b0c46e173e.png
Directory                       : K:/AI RAW/exiftool-13.30_64
File Size                       : 952 kB
File Modification Date/Time     : 2025:06:22 12:23:46+02:00
File Access Date/Time           : 2025:06:22 12:27:45+02:00
File Creation Date/Time         : 2025:06:22 12:27:43+02:00
File Permissions                : -rw-rw-rw-
File Type                       : PNG
File Type Extension             : png
MIME Type                       : image/png
Image Width                     : 1024
Image Height                    : 576
Bit Depth                       : 8
Color Type                      : RGB
Compression                     : Deflate/Inflate
Filter                          : Adaptive
Interlace                       : Noninterlaced
Prompt                          : {"3": {"inputs": {"seed": 907852447826184, "steps": 30, "cfg": 5.5, "sampler_name": "dpmpp_2m_sde", "scheduler": "simple", "denoise": 1.0, "model": ["4", 0], "positive": ["6", 0], "negative": ["7", 0], "latent_image": ["5", 0]}, "class_type": "KSampler", "_meta": {"title": "KSampler"}}, "4": {"inputs": {"ckpt_name": "juggernautXL_juggXIByRundiffusion.safetensors"}, "class_type": "CheckpointLoaderSimple", "_meta": {"title": "Load Checkpoint"}}, "5": {"inputs": {"width": 1024, "height": 576, "batch_size": 1}, "class_type": "EmptyLatentImage", "_meta": {"title": "Empty Latent Image"}}, "6": {"inputs": {"text": "Anime-style rooftop jungle on an abandoned skyscraper, vines overrun railings and satellite dishes, neon flowers glowing in the dusk u2014 in the center, a comfy couch facing a clear view of Earth rising over the horizon, psychedelic lighting, peaceful atmosphere", "clip": ["4", 1]}, "class_type": "CLIPTextEncode", "_meta": {"title": "CLIP Text Encode (Prompt)"}}, "7": {"inputs": {"text": "blurry, out of focus, low quality, poorly drawn, distorted proportions, extra limbs, missing limbs, deformed cat, mutated face, ugly, unrealistic anatomy, duplicate objects, watermark, text, logo, cropped, bad lighting, harsh sh
", "clip": ["4", 1]}, "class_type": "CLIPTextEncode", "_meta": {"title": "CLIP Text Encode (Prompt)"}}, "8": {"inputs": {"samples": ["3", 0], "vae": ["4", 2]}, "class_type": "VAEDecode", "_meta": {"title": "VAE Decode"}}, "9": {"inputs": {"filename_prefix": "ComfyUI", "images": ["8", 0]}, "class_type": "SaveImage", "_meta": {"title": "Save Image"}}}
Workflow                        : {"id": "2de74a1f-bc4a-4970-90b8-02c0edf0e870", "revision": 0, "last_node_id": 9, "last_link_id": 9, "nodes": [{"id": 8, "type": "VAEDecode", "pos": [1209, 188], "size": [210, 46], "flags": {}, "order": 5, "mode": 0, "inputs": [{"name": "samples", "type": "LATENT", "link": 7}, {"name": "vae", "type": "VAE", "link": 8}], "outputs": [{"name": "IMAGE", "type": "IMAGE", "slot_index": 0, "links": [9]}], "properties": {"cnr_id": "comfy-core", "ver": "0.3.36", "Node name for S&R": "VAEDecode"}, "widgets_values": []}, {"id": 4, "type": "CheckpointLoaderSimple", "pos": [-38.851097106933594, 285.3421936035156], "size": [315, 98], "flags": {}, "order": 0, "mode": 0, "inputs": [], "outputs": [{"name": "MODEL", "type": "MODEL", "slot_index": 0, "links": [1]}, {"name": "CLIP", "type": "CLIP", "slot_index": 1, "links": [3, 5]}, {"name": "VAE", "type": "VAE", "slot_index": 2, "links": [8]}], "properties": {"cnr_id": "comfy-core", "ver": "0.3.36", "Node name for S&R": "CheckpointLoaderSimple"}, "widgets_values": ["juggernautXL_juggXIByRundiffusion.safetensors"]}, {"id": 7, "type": "CLIPTextEncode", "pos": [349.1318359375, 384.08740234375], "size": [425.27801513671875, 180.6060791015625], "flags": {}, "order": 3, "mode": 0, "inputs": [{"name": "clip", "type": "CLIP", "link": 5}], "outputs": [{"name": "CONDITIONING", "type": "CONDITIONING", "slot_index": 0, "links": [6]}], "properties": {"cnr_id": "comfy-core", "ver": "0.3.36", "Node name for S&R": "CLIPTextEncode"}, "widgets_values": ["blurry, out of focus, low quality, poorly drawn, distorted proportions, extra limbs, missing limbs, deformed cat, mutated face, ugly, unrealistic anatomy, duplicate objects, watermark, text, logo, cropped, bad lighting, harsh sh
"]}, {"id": 9, "type": "SaveImage", "pos": [1451, 189], "size": [210, 270], "flags": {}, "order": 6, "mode": 0, "inputs": [{"name": "images", "type": "IMAGE", "link": 9}], "outputs": [], "properties": {"cnr_id": "comfy-core", "ver": "0.3.36"}, "widgets_values": ["ComfyUI"]}, {"id": 6, "type": "CLIPTextEncode", "pos": [346.2185974121094, 71.0367202758789], "size": [422.84503173828125, 164.31304931640625], "flags": {}, "order": 2, "mode": 0, "inputs": [{"name": "clip", "type": "CLIP", "link": 3}], "outputs": [{"name": "CONDITIONING", "type": "CONDITIONING", "slot_index": 0, "links": [4]}], "properties": {"cnr_id": "comfy-core", "ver": "0.3.36", "Node name for S&R": "CLIPTextEncode"}, "widgets_values": ["Anime-style rooftop jungle on an abandoned skyscraper, vines overrun railings and satellite dishes, neon flowers glowing in the dusk u2014 in the center, a comfy couch facing a clear view of Earth rising over the horizon, psychedelic lighting, peaceful atmosphere"]}, {"id": 5, "type": "EmptyLatentImage", "pos": [569.2938232421875, 631.5997924804688], "size": [315, 106], "flags": {}, "order": 1, "mode": 0, "inputs": [], "outputs": [{"name": "LATENT", "type": "LATENT", "slot_index": 0, "links": [2]}], "properties": {"cnr_id": "comfy-core", "ver": "0.3.36", "Node name for S&R": "EmptyLatentImage"}, "widgets_values": [1024, 576, 1]}, {"id": 3, "type": "KSampler", "pos": [934.7291870117188, 299.98046875], "size": [315, 262], "flags": {}, "order": 4, "mode": 0, "inputs": [{"name": "model", "type": "MODEL", "link": 1}, {"name": "positive", "type": "CONDITIONING", "link": 4}, {"name": "negative", "type": "CONDITIONING", "link": 6}, {"name": "latent_image", "type": "LATENT", "link": 2}], "outputs": [{"name": "LATENT", "type": "LATENT", "slot_index": 0, "links": [7]}], "properties": {"cnr_id": "comfy-core", "ver": "0.3.36", "Node name for S&R": "KSampler"}, "widgets_values": [907852447826184, "randomize", 30, 5.5, "dpmpp_2m_sde", "simple", 1]}], "links": [[1, 4, 0, 3, 0, "MODEL"], [2, 5, 0, 3, 3, "LATENT"], [3, 4, 1, 6, 0, "CLIP"], [4, 6, 0, 3, 1, "CONDITIONING"], [5, 4, 1, 7, 0, "CLIP"], [6, 7, 0, 3, 2, "CONDITIONING"], [7, 3, 0, 8, 0, "LATENT"], [8, 4, 2, 8, 1, "VAE"], [9, 8, 0, 9, 0, "IMAGE"]], "groups": [], "config": {}, "extra": {"ds": {"scale": 1.0177160120845925, "offset": [10.875911625322942, 164.57650936996689]}, "frontendVersion": "1.22.2", "VHS_latentpreview": false, "VHS_latentpreviewrate": 0, "VHS_MetadataImage": true, "VHS_KeepIntermediate": true}, "version": 0.4}
Image Size                      : 1024x576
Megapixels                      : 0.590

Power Automate Desktop

In Power Automate Desktop kannst du mit ein paar gezielten Schritten eine lokale Automatisierung bauen, die regelmäßig Bilddateien aus einem Ordner verarbeitet. Der Prozess lässt sich zum Beispiel so gestalten:

Du startest mit einer Schleife, die alle Dateien in einem definierten Verzeichnis durchläuft. Dabei prüfst du, ob es sich um Bildformate wie .jpg oder .png handelt. Für jede dieser Dateien rufst du dann ein externes Skript auf – zum Beispiel ein kleiner  Aufruf von exiftool, das die Metadaten ausliest und dir den Wert als Text zurückgibt.

Anschließend parst du die Rückgabe im Flow, extrahierst die relevanten Werte und übergibst sie an die nächste Aktion – zum Beispiel das Schreiben in eine Excel-Tabelle, eine lokale SQL-Datenbank oder eine CSV-Datei. Optional kannst du das Bild danach verschieben, um doppelte Verarbeitungen zu vermeiden, oder es mit einem Status versehen.

Am Ende hast du einen Flow, der völlig automatisch neue Bilder verarbeitet und deren Metadaten zentral speichert – ohne einen einzigen Mausklick. Das Ganze läuft auf deinem lokalen Rechner und lässt sich leicht zeit- oder triggerbasiert starten.

In Power Automate Desktop kannst du für die Metadaten-Extraktion bequem die Aktion „PowerShell-Skript ausführen“ verwenden. Damit lässt sich ein externes Tool wie exiftool direkt ansteuern, ohne dass du zusätzliche Software integrieren musst. Ein einfaches Beispiel ist folgendes Skript:

$tool = "K:\AI RAW\exiftool-13.30_64\exiftool.exe"
$file = "K:\AI RAW\exiftool-13.30_64\${newFileNameExt}"

$output = & $tool $file
Write-Output $output

Hier wird zuerst der Pfad zum exiftool definiert sowie der Pfad zur Bilddatei, die analysiert werden soll. Die Variable ${newFileNameExt} wird dabei im Flow vorher gefüllt – typischerweise mit dem aktuellen Dateinamen inklusive Endung. Das Skript führt exiftool dann mit dem Bild als Parameter aus, liest die Ausgabe ein und gibt sie zurück. Diese Rückgabe kannst du anschließend in Power Automate Desktop weiterverarbeiten, zum Beispiel in einzelne Werte aufteilen und in eine Tabelle schreiben.

Regex zum ermitteln von Werten

Wenn du EXIF-Daten mit Tools wie exiftool oder PowerShell ausliest, bekommst du oft eine lange Textausgabe zurück – meistens im Format Tagname : Wert. Das ist für Menschen gut lesbar, aber für eine automatisierte Weiterverarbeitung brauchst du gezielte Zugriffspunkte. Genau hier kommt Regex (Regular Expressions) ins Spiel.

Mit Regex kannst du ganz gezielt bestimmte Werte aus diesem Textblock extrahieren. Du sagst dem System: „Hol mir genau den Wert hinter dem Tag Date/Time Original“ oder „Gib mir die GPS-Koordinaten in reinem Zahlenformat“. Das ist besonders praktisch in Power Automate Desktop, wo du die Aktion „Text mit regulärem Ausdruck extrahieren“ verwenden kannst.

Der große Vorteil: Du musst nicht die gesamte Ausgabe parsen oder in JSON umwandeln, sondern holst dir nur die Daten, die du wirklich brauchst – direkt und effizient. Gerade wenn du mehrere Dateien verarbeitest oder nur bestimmte Metadaten speichern willst, ist Regex die schlanke Lösung, um Ordnung ins Textchaos zu bringen.

Eine Plattform, die ich dir absolut empfehlen kann, ist regex101.com. Dort kannst du deinen Text direkt einfügen, deinen Regex-Ausdruck live testen und bekommst sofort visuelles Feedback, welche Teile übereinstimmen. Besonders hilfreich: Die Seite erklärt dir jeden Teil deines Regex-Ausdrucks Schritt für Schritt und zeigt dir auch mögliche Fehlerquellen an. Ideal, um Ausdrücke für EXIF-Daten zu optimieren, bevor du sie in Power Automate Desktop einsetzt.

Beim Extrahieren von Werten aus der EXIF-Textausgabe arbeitest du in der Regel in zwei Schritten:

  1. Zuerst identifizierst du die Zeile, die den gewünschten Tag enthält – z. B. File Creation Date/Time, File Type Extension oder Prompt.

  2. Dann extrahierst du aus dieser Zeile den eigentlichen Wert, oft mithilfe eines zweiten, gezielten Regex-Ausdrucks.

Hier ein Blick auf deine drei Beispiele:

Ermitteln von File Creation Date/Time

File Creation Date\/Time\s*:\s*(.*)
# Diese Regex findet die komplette Zeile inklusive Wert.
\d{4}:\d{2}:\d{2} \d{2}:\d{2}:\d{2}
# Damit wird präzise das Datumsformat YYYY:MM:DD HH:MM:SS extrahiert.

Ermitteln von File Type Extension

File Type Extension\s*:\s*(.*)
# Diese Regex findet die komplette Zeile inklusive Wert.
:\s*(\S.+)
# Dieser Ausdruck holt den eigentlichen Wert.

Bitte beachtet das in diesem Fall der führend „: “ erst mal stehen bleibt. Regex ist PAD ist leider etwas holprig, wenn du einen besseren Ausdruck dafür hast, lass es mich wissen! 

Ermitteln von Prompt

Prompt\s*:\s*(\{.+)
# Diese Variante geht davon aus, dass der Prompt im JSON-Format beginnt ({).

In dem Fall entscheide ich mir direkt für ein klassichen Replace, bzw. in PowerFx ein Subsitute um den überflüssigen „: “ direkt mit zu entfernen, daher nutze ich hier im 2. Schritt eine PowerFx-Funktion um nur den JSON-Wert zu erhalten. Wer mit :\s*(\S.+), muss drauf achten diese beim erstellen seines Records zu entfernen. 

=Substitute(prompt,"Prompt                          : ",Blank())

Auch wenn Regex in Power Automate Desktop eine mächtige Funktion ist, gibt es ein paar Dinge, die du im Hinterkopf behalten solltest. Die Regex-Engine in PAD ist solide, aber nicht ganz so flexibel oder leistungsfähig wie in vollwertigen Entwicklungsumgebungen. Bestimmte Features wie Lookbehind oder komplexe Mehrzeilen-Matches werden nicht immer zuverlässig unterstützt – vor allem, wenn du versuchst, mit sehr verschachtelten oder dynamischen Mustern zu arbeiten.

Außerdem arbeitet PAD meistens zeilenbasiert und interpretiert den Text eher „einfach“. Das heißt, du musst oft mit Hilfsaktionen wie „Text in Zeilen aufteilen“ oder „Text bereinigen“ nachhelfen, bevor dein Regex überhaupt sauber greifen kann.

Ein weiterer Punkt: Es gibt keine echte Vorschaufunktion im Editor selbst. Du musst deinen Flow also ausführen, um zu sehen, ob dein Ausdruck funktioniert. Deshalb ist es umso wichtiger, deine Regex-Ausdrücke vorab mit Tools wie regex101.com zu testen – das spart dir Zeit kann dir aber dennoch den Nerv rauben.

Fazit – Der Schlüsssel zur Ordnung

EXIF-Daten werden oft unterschätzt – dabei stecken in ihnen genau die Informationen, die wir als Entwickler, Automatisierer oder Content Creator dringend brauchen. Egal ob du klassische Fotos mit der Kamera machst oder täglich Dutzende KI-Bilder generierst: EXIF gibt dir die Möglichkeit, Ordnung in deine Dateien zu bringen, Metadaten intelligent zu nutzen und automatisiert auszuwerten.

Gerade im KI-Bereich ist das ein echter Gamechanger. Wenn du mit Tools wie DALL·E, Midjourney oder Stable Diffusion arbeitest, dann erzeugst du schnell eine riesige Menge an Bildern. Ohne Struktur verlierst du da ruckzuck den Überblick. Aber wenn du die EXIF-Daten gezielt nutzt – sei es für Prompts, Zeitstempel oder Projektzuordnungen – kannst du diese Bilder sauber archivieren, später wiederfinden und sogar analysieren.

In Kombination mit Power Automate Desktop lässt sich daraus ein effektiver Workflow bauen: Bilder werden automatisch eingelesen, EXIF-Daten extrahiert, relevante Infos gespeichert – und das Ganze läuft ohne manuelles Zutun. Ob du die Daten in Excel, SharePoint oder eine SQL-Datenbank schreibst, ist nur eine Frage deiner Umgebung.

Und das Beste: Du kannst den Prozess beliebig erweitern. Zum Beispiel mit KI-gestützter Bildanalyse, automatischer Kategorisierung oder einer visuellen Übersicht in Power BI. Die EXIF-Daten sind der Startpunkt – was du daraus machst, liegt ganz bei dir.

noch mehr interessante Beiträge

Nach oben scrollen