ExifTool is a command line tool which allows you to view, edit and write metadata in a lengthy list of file types: audio, video, images, documents, archives and more.
So the program doesn't just handle the file formats where you can process metadata already (PDF, MP3 and JPG, say). It can also work with a host of proprietary formats: Adobe InDesign Documents, Visio drawings, many RAW formats, and more. And there's support for many file types which you may never have thought of as including metadata at all: RAR, WEBM, SWF and more.
At a minimum, ExifTool will be able to display, edit or write metadata to your chosen files (which can include a complete directory tree for speedy batch processing). But that's just the start. It can also process files based on their metadata, so for instance you're able to rename or organise files into directories according to some specified metadata tag. ExifTool can be used to extract thumbnail images from RAW files, very useful if the full-sized image won't display. And there are plenty of other unusual applications possible, such as geotagging a set of images based on GPS track log files.
There is a problem, though. As we mentioned above, this is a command line tool, so mastering its abilities will require much studying of the switches on offer, and mastery of some complex syntaxes. If you'd like to organise a set of files by their creation date, for instance, you might use a command like this:
exiftool "-FileName<CreateDate" -d "%Y%m%d_%H%M%S.%%e" DIR
Still, you can at least start more simply. Just dragging and dropping an image onto the executable is enough to display its metadata, for example. As you learn other switches you'll be able to add additional abilities fairly quickly. And if all else fails, there are some simple graphical front ends for ExifTool which you may prefer - the author's site has the latest list.
ExifTool 9.28 brings these changes:
Added the ability to delete unknown JPEG APP segments by segment name
Added a bunch of new ID3 Genre values (thanks Mats Peterson)
Decode a few more Sony tags (thanks Jos Roost)
Decode a few more tricky FLIR tags (thanks Tomas)
Improved Dutch language translation (thanks Peter van der Laan)
Patched to avoid warning in images where the AFMicroAdj data has been truncated by Canon DPP
Fixed -tagsFromFile and -v so they may now be used when writing via pipes
Fixed writing of Panasonic LensType tags that were broken in the 9.15 update
Fixed incorrect case for list type of XMP DocumentAncestors and TextLayers
Allow a File::RandomAccess reference as an input to WriteInfo()