I was always using shell scripts to do mass file renamings. But now there are definitely simplier tools exist. One of them came to my knowledge recently is rename. It is standard tool and does the most simple and common task—replace one substring with another in filenames.
Second useful tool is convmv. It not only allows to convert filenames between different encodings, but also to convert between upper and lower case.
Also mmv deserves mention. It could do replacement basing on pattern.