Erstellungsdatum mit EXIF-Datum ersetzen
Hallo,
habe mir ein paar Batch-Befehle zusammengestellt um meine Fotosammlung besser zu organisieren, greife dafür auch auf Jhead zurück.
Nun möchte ich noch das Erstellungsdatum der Fotos mit dem Bild-Aufnahmedatum aus dem EXIF-Header ersetzten.
Wie kann ich das Erstellungsdatum unter Windows beeinflussen bzw. weiß jemand von euch wie man mit/ohne Jhead das Aufnahmedatum auslesen und damit das Erstellungsdatum überschreiben kann?
Danke schon mal für eure Bemühungen.
JK
Falls notwendig hier der bisherige Code:
habe mir ein paar Batch-Befehle zusammengestellt um meine Fotosammlung besser zu organisieren, greife dafür auch auf Jhead zurück.
Nun möchte ich noch das Erstellungsdatum der Fotos mit dem Bild-Aufnahmedatum aus dem EXIF-Header ersetzten.
Wie kann ich das Erstellungsdatum unter Windows beeinflussen bzw. weiß jemand von euch wie man mit/ohne Jhead das Aufnahmedatum auslesen und damit das Erstellungsdatum überschreiben kann?
Danke schon mal für eure Bemühungen.
JK
Falls notwendig hier der bisherige Code:
echo Alle im Ornder befindlichen JPG-Dateien werden umbenannt:
echo 20090708_140912_BEZEICHUNG.jpg
echo EXIF-Datum_-Uhrzeit_BEZEICHUNG.jpg
echo.
for /f %%i in ('dir *.jpg ^2^>nul^|find "Datei(en)"') do set /a anz+=%%i
echo Es werden %Anz% JPG-Dateien berarbeitet.
echo.
:begin
set /P bezeichnung=Bitte geben Sie die Bezeichnung ein:
if "%bezeichnung%"=="" goto begin
echo.
echo Fotos werden laut EXIF-Daten umbenannt:
jhead -nf%%Y%%m%%d-%%H%%M%%S "**\*.jpg"
echo Fotos werden mit Bezichnungen versehen...
for /f %%i in ('dir "*.jpg" /B^|findstr /V /I /B "%bezeichnung%"') do ren "%%~fi" "%%~ni_%bezeichnung%%%~xi"
echo.
echo Fotos werden laut EXIF-Daten gedreht:
jhead -autorot "**\*.jpg"
echo.
echo EXIF-Daten werden dem Aenderungsdatum zugewiesen:
jhead -exonly -ft "**\*.jpg"
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 121351
Url: https://administrator.de/forum/erstellungsdatum-mit-exif-datum-ersetzen-121351.html
Ausgedruckt am: 23.12.2024 um 16:12 Uhr
8 Kommentare
Neuester Kommentar
Hallo JK87!
Zum Thema "Aufnahmedatum auslesen" hatten wir mal diesen Thread ...
Das Ändern des Erstellungsdatums kannst Du entweder mit einem "touch"-Tool vornehmen oder auf die "harte" Tour: Systemdatum und Zeit jeweils passend setzen und Foto kopieren bzw das Systemdatum vor dem Rotieren ändern (dadurch dürfte ja auch eine neue Datei "erstellt" werden) ...
[Edit] Noch eine Anmerkung: In der Beschreibung von "Jhead" wird auch die Funktion "Re-name or date stamp files according to exif timestamp erwähnt ... [/Edit]
Grüße
bastla
Zum Thema "Aufnahmedatum auslesen" hatten wir mal diesen Thread ...
Das Ändern des Erstellungsdatums kannst Du entweder mit einem "touch"-Tool vornehmen oder auf die "harte" Tour: Systemdatum und Zeit jeweils passend setzen und Foto kopieren bzw das Systemdatum vor dem Rotieren ändern (dadurch dürfte ja auch eine neue Datei "erstellt" werden) ...
[Edit] Noch eine Anmerkung: In der Beschreibung von "Jhead" wird auch die Funktion "Re-name or date stamp files according to exif timestamp erwähnt ... [/Edit]
Grüße
bastla
Hallo JK87!
-ft Sets the file's system time stamp to what is stored in the Exif header.
würde ich anders interpretieren (habe ich allerdings nicht getestet) ...
Grüße
bastla
müsste doch auch irgendwie mit Batch zu realisieren gehen.
Ich würde das auch heute noch als Batch (wenn auch mit ein klein wenig VBScript garniert ) bezeichnen ...Verwenden des EXIF-Datum/Zeitstempel nur für den Dateinamen und nicht für das Erstellungsdatum gemeint
Die hier beschriebene Option-ft Sets the file's system time stamp to what is stored in the Exif header.
würde ich anders interpretieren (habe ich allerdings nicht getestet) ...
Grüße
bastla
Hallo JK87!
Wieso willst Du eigentlich das Datum nicht über "jhead" auslesen? Mit
solltest Du ja alle Datums-/Zeitbestandteile erhalten und entsprechend weiter verarbeiten können ...
Grüße
bastla
P.S.: Das angesprochene VBScript liefert (unter XP bei mir) mit "25" das Ergebnis "Dateiname$Timestamp", wenn die Zeile 10 so geändert wird:
Die Ausgabe von "Dateiname" und "Timestamp" (getrennt durch "$", daher auch in der "for"-Schleife als "delim" verwendet) ist übrigens erforderlich, weil das VBScript nur ganze Ordner, nicht aber einzelne Dateien auslesen kann ...
Das -ft beeinflusst leider nur das Änderungsdatum - habe ich auch in Verwendung.
Tja, dann eben tatsächlich ein "touch" oder das Kopieren (nur zur Sicherheit: das "Erstellungsdatum" wird beim erstmaligen Schreiben auf den Datenträger gesetzt) der Datei (nach Setzen von Datum/Uhrzeit auf den ausgelesen Wert) in eine Temporär-Datei und ein anschließendes "move" zurück, um die ursprüngliche Datei zu überschreiben.Wieso willst Du eigentlich das Datum nicht über "jhead" auslesen? Mit
for /f "tokens=3-8 delims=: " %%a in ('jhead TEST.JPG^|findstr /b /c:"File date"') do echo %%c.%%b.%%a %%d:%%e:%%f
Grüße
bastla
P.S.: Das angesprochene VBScript liefert (unter XP bei mir) mit "25" das Ergebnis "Dateiname$Timestamp", wenn die Zeile 10 so geändert wird:
echo For Each F In Fld.Items:WScript.Echo F^&"%Delim%"^&Fld.GetDetailsOf(F,25):Next>>%G%