Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

EXIFTOOL - Set datetime from filename

Tags:

exif

exiftool

I have many photos named with a date format but the EXIF dates don't match.

e.g. 2016-12-16_20-20-29.jpg

Running them through EXIFTOOL I can almost overwrite the dates but it doesn't match the exact date format.

exiftool "-datetimeoriginal<filename" ./

This sets the date to the correct calendar day but ignores the time.

exiftool "-datetimeoriginal<filename" -d "%Y-%M-%D_%H-%M-%S.%%e" ./

I believe the -d parameter sets a data format but this returns as error of Warning: Error parsing time in ExifIFD:DateTimeOriginal (PrintConvInv)

Is this the correct method to use?

like image 287
sidonaldson Avatar asked Jan 02 '17 12:01

sidonaldson


2 Answers

Your first command should work correctly. From Exiftool FAQ 5:
"ExifTool is very flexible about the actual format of input date/time values when writing, and will attempt to reformat any values into the standard format unless the -n option is used. Any separators may be used (or in fact, none at all). The first 4 consecutive digits found in the value are interpreted as the year, then next 2 digits are the month, and so on. [The year must be 4 digits. Other fields are expected to be 2 digits, but a single digit is allowed if the subsequent character is a non-digit.] "

The example given following that paragraph is almost the same as your first command.

The -d option isn't needed for this type of operation.

Example output

C:\>exiftool -datetimeoriginal "X:\!temp\2016-12-16_20-20-29.jpg"

C:\>exiftool "-datetimeoriginal<filename" "X:\!temp\2016-12-16_20-20-29.jpg"
    1 image files updated

C:\>exiftool -datetimeoriginal "X:\!temp\2016-12-16_20-20-29.jpg"
Date/Time Original              : 2016:12:16 20:20:29
like image 80
StarGeek Avatar answered Nov 05 '22 15:11

StarGeek


To follow up on StarGeek's good answer.

It turns out I had corrupted my exif data and that is why the command didn't succeed.

To fix it I first cleared the data

exiftool -all= −overwrite_original ./

then I was able to run the command again to set the date from the filename. An added bonus was that I discovered the property -alldates which updated every date within the meta data excluding the file write / mod dates.

exiftool "-alldates<filename" −overwrite_original ./

.n.b −overwrite_original prevents the creation of backup files

like image 44
sidonaldson Avatar answered Nov 05 '22 15:11

sidonaldson