No loop, ele retorna o mesmo valor para o nome da pasta a cada iteração do loop
SET dirname=%filename:~0,13%
Você precisa usar a expansão atrasada como fez para o número:
SET dirname=!filename:~0,13!
- Um índice A-Z da linha de comando do Windows CMD
- Uma lista categorizada de comandos do Windows CMD
- enabledelayedexpansion - Expansão com atraso fará com que as variáveis sejam expandidas em tempo de execução e não no tempo de análise.