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.