Você deve começar com:
@setlocal enableextensions enabledelayedexpansion
@echo off
for /f "delims=*" %%a IN ('dir /b 00*.jpg') do (
set file=%%a
set newfile=!file:~2!
echo move !file! !newfile!
)
endlocal
Isto, como está, simplesmente ecoará o comando move
. Remova o echo
assim que terminar de testar. E lembre-se de que isso pode não funcionar como esperado se os nomes dos arquivos contiverem espaços neles.
Percorrendo-o pouco a pouco:
- O
setlocal
permite determinadas extensões decmd.exe
, sendo que aqui está a capacidade de fazer uma expansão atrasada das variáveis de ambiente dentro defor
loops. - O loop
for
executa o cmddir /b 00*.jpg
, fazendo uma iteração por arquivo (configurando%%a
para o nome do arquivo). - O primeiro
set
simplesmente salva o nome do arquivo em uma variável. A segunda é uma operação de substring começando no terceiro caractere. - O
move
renomeia o arquivo.
Você pode examinar os vários comandos inserindo os comandos help
na linha de comando:
setlocal /?
set /?
for /?
set /?