Após uma rápida olhada na página de referência para para , eu pude pensar nisso:
@echo off & setlocal EnableDelayedExpansion
set a=1
for /f "tokens=1,2 delims=." %%G in ('dir /b /s /A:-D') do (
ren "%%G.%%H" "A!a!.%%H"
set /a a+=1
)
Atualização: seria melhor passar a pasta inicial como um parâmetro, para que o próprio script possa ser colocado em qualquer lugar e não corra o risco de ser renomeado.
@echo off & setlocal EnableDelayedExpansion
set a=1
for /f "tokens=1,2 delims=." %%G in ('dir /b /s /A:-D %1') do (
ren "%%G.%%H" "A!a!.%%H"
set /a a+=1
)
Explicação:
@echo off evita que todos os comandos sejam gravados no console.
setlocal EnableDelayedExpansion isso é necessário para que a variável a aumente de fato.
set a=1 criamos uma variável de contador chamada a e definimos seu valor inicial como 1 .
for /f loop contra uma lista de nomes de arquivos.
tokens=1,2 delims=. o nome do arquivo será dividido quando . for encontrado. Estamos interessados nos dois primeiros tokens resultantes dessa operação. Nota: espera-se que nomes de arquivos não contenham um ponto, exceto entre o nome da base e a extensão.
%%G é o nome do primeiro token (está implícito que o segundo será %%H ).
in ('dir /b /s /A:-D %1') executa o loop sobre os resultados do comando dir , que lista os arquivos no diretório transmitidos como um parâmetro %1 com as seguintes opções: /b clean output, /s include resultados de subdiretórios, /A:-D apenas lista arquivos e não nomes de pastas.
ren "%%G.%%H" "A!a!.%%H" renomeie o nome do arquivo ( %%G.%%H reconstrói o nome do arquivo original) para uma constante A mais a variável a do valor atual, mais a extensão original %%H .
set /a a+=1 incrementa a variável do contador.