ExifTool Forum

ExifTool => Newbies => Topic started by: carrmandie on October 07, 2019, 06:07:45 PM

Title: Including directory in file name
Post by: carrmandie on October 07, 2019, 06:07:45 PM
I'm renaming photos from a lot of cameras at once. Not all of the cameras have a unique userlabel tag, but they are all in unique folders. For example, three cameras may have the folder structures:
E:/OriginalPhotos/10A/123
E:/OriginalPhotos/10A/456
E:/OriginalPhotos/32A/101

I'd like to rename all photos in the parent directory E:/OriginalPhotos to include the last two sub-directories, so that the rename structure would be something like this:
E:/RenamedPhotos/10A_123_20191007_155700

If I were processing one camera at a time, I'd use this script, where I just write in the unique information manually:
exiftool -r -d %Y%m%d_%H%M%S "-filename<E:/RenamedPhotos/10A_123_${CreateDate}.%e" E:/OriginalPhotos/10A/123

I know that there is a Directory tag that I could call from within the filename argument, but I'm only interested in the last 2 sub-directories. Is there a way to extract those automatically for each photo? I'm running this script using R, so in theory I could write a loop function to go through, grab the relevant substring, and paste it in there, but loop functions are less than ideal when dealing with hundreds of thousands of photos.
Title: Re: Including directory in file name
Post by: StarGeek on October 07, 2019, 07:01:34 PM
Test it out first using TestName instead of Filename but try something like this
exiftool -r -d %Y%m%d_%H%M%S "-Filename<E:/RenamedPhotos/${Directory;$_=(split '\/',$_)[-2]}_${Directory;$_=(split '\/',$_)[-1]}_${CreateDate}.%e" E:/OriginalPhotos

The directory part splits the entire directory path into an array based upon the slashes (exiftool uses slash / internally, even on Windows).  It then takes the second to last [-2] and last [-1] parts of that array and sets that as the value for the tag.
Title: Re: Including directory in file name
Post by: carrmandie on October 08, 2019, 12:24:45 PM
Perfect! That's exactly what I was looking for. Thank you!