Two steps at the command prompt:
for %a in (*.ext) do @echo %~na >>files.lst
for /f "tokens=1,3,4" %i in (files.lst) do @ren "%i - %j %k.ext" "%j %k - %i.ext"
First, verify that files.lst does not exist.
This only works if there are no spaces in the BookTitle, First or Last names and there is a space before and after the -. If not, you can experiment with delim= option.
Of course, test this on a copy of the directory (or subset of) that contains the .ext files.
ren can be changed to echo for testing.