Devido a delayedexpansion é necessário ao configurar e usando um var em a (bloco de códigos ) não funciona.
Mas, como você não altera as variantes que não são necessárias.
@Echo off & Setlocal EnableDelayedExpansion
for /F "tokens=1,2,3 delims=-" %%a in ('dir /B /A-D') do (
set "Folder=%%a-%%b-%%c"
Rem to remove the trailing space from the Folder
set "Folder=!Folder:~0,-1!"
If not exist "!Folder!\" MD "!Folder!"
)
Para mover também os arquivos que estão errados, você deve primeiro fazer uma iteração dos arquivos e dividi-los como acima.