Ich hatte das gleiche Problem und wollte nicht mühselig jedes Bild einzeln bearbeiten.
Hab dann mit ChatGpt einen Phyton Code schreiben lassen, der für alle mir untergekommenden Dateitypen das Erstelldatum durch das Änderungsdatum ersetzt. Dafür im Code den Quellordner und Zielordner angeben.
import os
import shutil
from datetime import datetime
from pathlib import Path
import pywintypes
import win32file
import win32con
def set_creation_date(file_path, creation_time):
wintime = pywintypes.Time(creation_time)
handle = win32file.CreateFile(
file_path, win32con.GENERIC_WRITE, 0, None, win32con.OPEN_EXISTING, 0, 0
)
win32file.SetFileTime(handle, wintime, None, None) # Ändert nur das Erstellungsdatum
handle.close()
def format_datetime(dt):
return dt.strftime("%Y%m%d_%H%M%S")
def process_files(source_folder, target_folder):
# Liste der unterstützten Dateiformate basierend auf deiner Liste
supported_formats = [
'.3gp', '.aae', '.bkup', '.crypt12', '.db', '.dng', '.docx', '.flv',
'.gif', '.heic', '.ini', '.jpeg', '.jpg', '.mov', '.mp4', '.png',
'.txt', '.unknown', '.webp', '.xcf'
]
for root, _, files in os.walk(source_folder):
for filename in files:
source_file = os.path.join(root, filename)
# Prüfen, ob es sich um eine unterstützte Datei handelt
if filename.lower().endswith(tuple(supported_formats)):
# Änderungsdatum abrufen
modified_time = os.path.getmtime(source_file)
modified_date = datetime.fromtimestamp(modified_time)
# Zielordner für die aktuelle Datei erstellen
relative_path = os.path.relpath(root, source_folder)
target_subfolder = os.path.join(target_folder, relative_path)
Path(target_subfolder).mkdir(parents=True, exist_ok=True)
# Datei kopieren
target_file = os.path.join(target_subfolder, filename)
shutil.copy2(source_file, target_file)
# Erstellungsdatum in den Metadaten der neuen Datei setzen, außer bei .aae-Dateien
if not filename.lower().endswith('.aae'):
set_creation_date(target_file, modified_date)
print(f"Copied: {source_file} to {target_file} with creation date {modified_date}")
# Beispielaufruf
source_folder = r"C:\Pfad\Quelle" # Ersetze dies mit deinem Quellordner
target_folder = r"C:\Pfad\Ziel" # Ersetze dies mit deinem Zielordner
process_files(source_folder, target_folder)