Script em lote - concatena números sequenciais em arquivos para manter os nomes exclusivos
Eu estou trabalhando em um script para copiar arquivos em uma pasta que corresponde ao nome do arquivo e eu tenho essa parte trabalhada usando um loop FOR que verifica se a pasta de destino existe e copia os arquivos depois de ter verificado que ele faz . Exemplo: 11-01111_ABC_DEF.pdf iria para / 11/0111 /. O comprimento pode variar em um ou dois caracteres, mas o formato é consistente. Eu copiei meu script básico abaixo.
Meu problema é que, às vezes, um arquivo com o mesmo nome precisa ser processado. Como eu poderia ir sobre a concatenação de um número para o final do arquivo, se uma ou mais cópias do arquivo já existe na pasta de destino?
setlocal enableextensions enabledelayedexpansion
for %%x in (*.PDF *.TXT) do (
set "source="C:\files"
set "dest=R:\"
set "filename=%%x"
set "prefix=!filename:~0,2!"
set "folder=!filename:~3,5!"
if not exist !dest!\!prefix!\!folder! MOVE !filename! !source!\failed
if exist !source!\!filename! MOVE !filename! !dest!\!prefix!\!folder!
)