ExifTool Forum

ExifTool => Newbies => Topic started by: duttonbay on September 13, 2019, 05:10:03 AM

Title: Shifting timestamp and renaming file in single command
Post by: duttonbay on September 13, 2019, 05:10:03 AM
I've been using exiftool for a little while, most commonly to either rename files to a YYYYMMDD-HHMMSS filename based on the create date, or to adjust the timestamps because I have changed timezones. I can do both in two steps like this:

exiftool -time:all+=1 -d %Y%m%d-%H%M%S.%%e blah.jpg
exiftool "-filename<createdate" -d %Y%m%d-%H%M%S.%%e "-filemodifydate<createdate" blah.jpg

but it would be very nice to be able to do this in a single step process. I've tried all sorts of options, read what seems like hundreds of posts in the forum, but haven't yet been able to get a single command to change the timestamps and also rename the file.

As you can probably see from the commands above I am using Windows.

Any help gratefully accepted.
Title: Re: Shifting timestamp and renaming file in single command
Post by: Hayo Baan on September 13, 2019, 07:08:36 AM
This is what the -execute option is for:

exiftool -time:all+=1 -d %Y%m%d-%H%M%S.%%e -execute "-filename<createdate" -d %Y%m%d-%H%M%S.%%e "-filemodifydate<createdate" -common_args blah.jpg
Title: Re: Shifting timestamp and renaming file in single command
Post by: duttonbay on September 13, 2019, 07:23:26 AM
Thanks Hayo. Right at the moment I am not in a position to try this, but will do so tomorrow morning (my time, in Australia)
Title: Re: Shifting timestamp and renaming file in single command
Post by: StarGeek on September 13, 2019, 12:00:18 PM
Just to be clear, this is still a two pass solution.  The -execute option (https://exiftool.org/exiftool_pod.html#execute-NUM) just speeds things up a bit because exiftool doesn't have to start up again. 

I'd suggest this
exiftool -globalTimeShift 1 -d %Y%m%d-%H%M%S.%%e -TagsFromFile @ -time:all "-filename<createdate" blah.jpg

Example output:
C:\>exiftool -time:all --system:all -g1 -a -s "Y:\!temp\yyy\blah.jpg"
---- ExifIFD ----
DateTimeOriginal                : 2019:08:01 13:00:00
CreateDate                      : 2019:08:01 13:00:00

C:\>exiftool -P -overwrite_original -globalTimeShift 1 -d %Y%m%d-%H%M%S.%%e -TagsFromFile @ -time:all "-filename<createdate" "Y:\!temp\yyy\blah.jpg"
    1 image files updated

C:\>exiftool -time:all --system:all -g1 -a -s "Y:\!temp\yyy"
======== Y:/!temp/yyy/20190801-140000.jpg
---- ExifIFD ----
DateTimeOriginal                : 2019:08:01 14:00:00
CreateDate                      : 2019:08:01 14:00:00
    1 directories scanned
    1 image files read
Title: Re: Shifting timestamp and renaming file in single command
Post by: Hayo Baan on September 13, 2019, 12:08:47 PM
Thanks StarGeek for improving upon my proposal. Totally forgot about -globalTimeShift ::)
Adding -P to keep original file (modification) times is good too. And -overwrite_original is, of course, a necessary addition as well (once the command is verified to work well).
Title: Re: Shifting timestamp and renaming file in single command
Post by: StarGeek on September 13, 2019, 12:19:27 PM
It's not something I really use so I wasn't sure it would work until I tested it.  I tried searching the forums for a shift and rename question and didn't find anything right away, though I was pretty sure it had come up before.
Title: Re: Shifting timestamp and renaming file in single command
Post by: duttonbay on September 13, 2019, 11:50:08 PM
Thanks both Hayo and StarGeek. StarGeek's solution worked perfectly, and I was able to modify it changer the filecreate and filemodify times as well, and with an -if condition, do this only for photos with the camera which had not been set to the current timezone.   I had searched for shift and rename too, and didn't find anything obvious, at least not quickly.