Você só precisa adicionar algumas linhas à sub-rotina: -
:subr
set filename=%1
Rem Check for existence of directories in target path
if not exist %filename:~1,3% md %filename:~1,3%
if not exist %filename:~1,3%\%filename:~1,7% md %filename:~1,3%\%filename:~1,7%
Rem Now the move can proceed
move %1 %filename:~1,3%\%filename:~1,7%\
exit /b
Isso falhará se houver um arquivo existente com o mesmo nome de um dos caminhos de diretório que você precisa criar. Você precisará decidir como lidar com esse caso, adicionando uma extensão ao nome ou movendo o arquivo para outro lugar.