Renomeando no prompt de comando

0

Eu tenho imagens com nomes de arquivos como 0034343.jpg e quero remover os zeros à esquerda, deixando 34343.jpg como o novo nome do arquivo.

Como posso fazer isso no prompt de comando? Eu tentei REN 00*.jpg *.jpg , mas não funcionou.

    
por text 20.09.2010 / 13:03

2 respostas

5

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 de cmd.exe , sendo que aqui está a capacidade de fazer uma expansão atrasada das variáveis de ambiente dentro de for loops.
  • O loop for executa o cmd dir /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 /?
    
por 20.09.2010 / 13:17
2

Tente isto:

for %i in (*.jpg) do (
    set filename=%~nxi
    set newname=%filename:~2%
    ren !filename! !newname!
)

Isso tira apenas dois caracteres do início de cada nome de arquivo. A expansão atrasada deve estar ativada. Pode ser necessário fazer cmd.exe /v:on primeiro no XP.

    
por 20.09.2010 / 13:16