Hi,
Here's another formula:
RegEx (1):MATCH: (.*?) - (.*) (.*) - (.*)
REPLACE: \1 - \3, \2 - \4
It's a little more inclusive, since it will allow you to change all of the following:
YOUR MODEL:SF166-07 - Elvis Presley - Jailhouse Rock.zipto
SF166-07 - Presley, Elvis - Jailhouse Rock.zipARTIST NAMES WITH THREE OR MORE WORDS:SF166-07 - Stevie Ray Vaughan - Boot Hill.zipto
SF166-07 - Vaughan, Stevie Ray - Boot Hill.zipARTIST NAMES WITH NON-LETTER CHARACTERS (in this example the ' between the O and the C):SF166-07 - Sinead O'Connor - Nothing Compares 2 U.zipto
SF166-07 - O'Connor, Sinead - Nothing Compares 2 U.zipThere's just one thing: it can't differentiate this kind of situations:
Name Name LastName > The formula will put the last word at the begining (3, 1 2), and that's correct.
Name LastName LastName > The formula will put the last word at the begining (that's what it'll always do), but in this case that's incorrect; it should be 2 3, 1 since it is a compound last name.
Necessarily you're gonna need your human knowledge to distinguish that; no formula or software is THAT smart

Best regards,
Gabriel
P.S.:
NOTE TO THE DEVELOPERS: The RegEx field seems to have problems with accentuated and probably other special characters. Just to follow the examples, if the name of the file is "SF166-07 - Paco de LucÃa - Some song.zip" the expression will just refuse to do any kind of change because of the "Ã" in "LucÃa".
I haven't made a complete testing, but the other fields (Replace, Remove, Numbering, etc.) don't have that problem, and their respective operations are done just fine.