This should do it for the file names you have given. It assumes that the name part consists of uppercase letters, spaces, and dashes. And in the case of two years present, that they are separated by a dash. Also, it assumes that the first file does contain a year (otherwise it has nothing to deduct it from), and it will process every file present in the directory.
Copy&paste to the Terminal, and if you want to check first that it will do it correctly, add an
echo before the
for FILENAME in *
# remove name part
TRIM=`echo $FILENAME | sed -E 's/[A-Z -]*//'`
# remove possible start year
TRIM=`echo $TRIM | sed -E 's/[0-9]*-//'`
if [ -z "$TRIM" ]
# file name didn't include year
mv "$FILENAME" "$FILENAME - $YEAR"
# file name did include year