|delims clause will only support 1-byte arguments, so @@@ would not work as a delimiter, only @ will. Just about any character will work as a delims argument, but some may need escaped. I don't know which ones, i always forget and have to trial-error till i get it to work. If you could sacrifice the spaces surrounding the hyphen (or whichever other) delimiter, you could nail it with a one-liner:|
@for /f "tokens=1,3 delims=-." %%a in ('dir /b *-*.epub') do echo ren %%a-%%b.epub %%b-%%a.epub
If you want to pick a delim that is less likely to appear in a title, you might try the tilde (~) or caret (^) or underscore (_), but of course, nothing guarantees that a title won't come along with one of those in it (freedom of speech and all that). If this is just a one-time deal, then you know what you're dealing with, otherwise, the field is open (in which case, you would need some tests in your code, but it could still work).