ExifTool, moving from cmd line to Powershell
Previously I highlighted the issue in using Exiftool and getting it to add GPS data to a photo. Now that that issue is resolved (see here) we move on to getting it to work within Powershell.
Getting it to work within Powershell is important for myself as I’m using that to copy photos from my SD card onto my machine much much faster than the Sony software can (see here). So why not reuse this script and as well as copying it across, I can add GPS data and also copy it across.
The Command
exiftool -GPSLatitude*=56.9359839838 -GPSLongitude*=-4.4651045874 DSC00320.JPG
Above we have a working command. Powershell can call executables in various ways as can be seen here.
Option 1 – The & operator
This failed as the parameters for exiftool require to be more than a single string, which is what the &
does. If you look at the link to the MS article I tried all the &
options it suggests and nothing was close to working.
Option 2 – Direct call
Direct call requires to add .\
if the item isn’t in the PATH
or some other means to grab the correct folder location. I had the exiftool in the same folder as the script so .\
did me just fine.
Cut to the chase…
There is an issue with powershell, and the -
cause it issues. See this issue listed here
This meant on my first pass I had to split it into 2 requests to correctly update the GPS.
$combLat = '-GPSLatitude*=' + $point.lat
$combLon = '-GPSLongitude*=' + $point.lon
.\exiftool.exe $combLat $f.FullName '-overwrite_original_in_place'
.\exiftool.exe $combLon $f.FullName '-overwrite_original_in_place'
Now with the use of backticks I can do the following
.\exiftool.exe `-GPSLatitude*=$point.lat `-GPSLongitude*=$point.lon $f.FullName -overwrite_original_in_place
Phew…
That tiny piece of code above (change to backtick) took so long and with a combination of human error and not knowing the order to use a ` or a ‘ or a ” or even a range of them required fair bit of trial and error.
It’s on Github
If you wish to view the full code, grab it, run it, etc then head over to this link.
I’ve seriously cut back this post as so many things I’ve learnt, but the easiest way for you pick up from my learning is to just view the code. A picture may well speak a 1000 words. But a 100 lines of code is so much better than 10,000 words in a blog 😉