Concordo com o @Anal de que o ImageMagick é a ferramenta básica de que você precisa.
No entanto, eu queria adicionar algumas ferramentas que uso para renomear em lote. Ao importar cargas de imagens de câmeras, eu gosto de renomear para um formato específico
2007-05-30 13-24-05-Canon PowerShot A720 IS.jpg
O que me permite ter pastas com fotos de várias câmeras tiradas ao mesmo tempo sem conflitos.
Para fazer isso, eu uso 2 ferramentas:
Eu uso o jhead para a maioria das tarefas de renomeação para imagens padrão, mas não funciona bem com o Nikon RAW e alguns formatos de vídeo, o exiftool é usado para isso.
Usando esses, posso renomear com base no timestamp incorporado & tipo de câmera e eu também posso definir campos IPTC padrão, como por linha e direitos autorais, se eu quiser.
Eu uso um script de shell para fazer todo o trabalho burro repetitivo.
Estas ferramentas & ImageMagick também são multi-plataforma, se necessário, no Linux & Janelas. Eu costumo usá-los via Cygwin no Windows, mas só porque me permite usar o script de shell. Você poderia facilmente fazer tudo isso com um script de lote de comandos do Windows ou até mesmo obter um script HTML Application (.HTA) que poderia lhe dar uma GUI com muita facilidade.
Aqui está um trecho do script:
case $1 in
--help|-h|-?)
echo ' '
echo 'Rename a folder full of files to match the date/time taken and the camera model:'
echo ' "IMG_0001.jpg" ==> "2007-05-30 13-24-05-Canon PowerShot A720 IS.jpg"'
echo ' Adds a letter to end of name if the result is not unique'
echo ' '
echo 'Please use as:'
echo ' rename.sh folderName [t]'
echo 'Where:'
echo ' folderName is absolute or relative to current folder'
echo ' t, if present prints the command that would be used'
echo ' '
echo 'Requirements:'
echo ' 1) jhead (detects camera type)'
echo ' 2) exiftool (renames non-jpg files)'
echo ' '
echo 'Use the following workflow:'
echo ' 1) Copy files and folders from the camera(s) to a temp folder'
echo ' 2) Run this against the temp folder and check the renames'
echo ' 3) Manually rename any left-overs'
echo ' 4) Add IPTC comments, locations, etc.'
echo ' 5) Run '
exit
esac
### ---> sort out folder names and other stuff here <---- ###
# There are a number of these kinds of lines for different cameras
jhead -model A70 -exonly -nf'%Y-%m-%d %H-%M-%S-Canon PowerShot A70' -ft *.jpg
# Deal with .NEF (Nikon Raw) files (rename to YYYY-MM-DD HH-MM-SS-NIKON D90-DSC_????.NEF)
exiftool '-FileName<${CreateDate}-NIKON D90-%f.%e' -d '%Y-%m-%d %H-%M-%S' DSC_????.NEF
# Use %c to add seq num where required
Eu sempre quis voltar a substituir o jhead por apenas exiftool - um dia, talvez!