Arquivo de lote renomeia com sufixo como 01 02 03 04 e assim por diante

3

Eu tenho muitos arquivos com palavras-chave semelhantes, como

computer-stock-photo.jpg 
computer-stock-picture.jpg
computer-picture.jpg

O que eu quero fazer é o sufixo de números de 2 dígitos em série, como

computer-stock-photo-01.jpg, 
computer-stock-picture-02.jpg, 
computer-picture-03.jpg

Além disso, o script em lote deve funcionar com qualquer extensão, como jpg ou png.

O script que tentei:

@echo off
setlocal disableDelayedExpansion
set "chars=0123456789"
for /f "eol=: delims=" %%F in ('dir /b /a-d *.jpg') do call :renameFile "%%F"
exit /b

:renameFile
setlocal enableDelayedExpansion
:retry
set "name="
for /l %%N in (1 1 8) do (
  set /a I=!random!%%36
  for %%I in (!I!) do set "name=!name!!chars:~%%I,1!"
)
echo if exist !name!.jpg goto :retry
endlocal & ren %1 %name%.jpg

O script acima só funciona para jpg e adiciona números aleatórios não em série.

    
por Dilip 02.04.2016 / 19:15

2 respostas

1

Acredito que você deseje postar esta pergunta no Stack Overflow se quiser que alguém o ajude a escrever um script para seus objetivos. Para seguir o resumo deste fórum aqui, vou fornecer-lhe um link para um programa chamado Bulk Rename Utility. Tem sido recomendado no passado por outros usuários do Stack Exchange e parece se encaixar nos seus critérios.

link

    
por 02.04.2016 / 20:26
1

Renomeie o arquivo com sufixo como 01 02 03 04 etc

Jogue fora seu roteiro inadequado. Você não precisa de números aleatórios e não processa .png arquivos.

Eu escrevi um novo script do zero, como foi mais fácil do que tentar consertar seu script quebrado.

Use o seguinte arquivo em lotes:

@echo off
setlocal enabledelayedexpansion
rem initialise counter
set /a "x=1"
rem process jpg and png files
for /f "usebackq tokens=*" %%i in ('dir /b *.jpg *.png') do (
  rem split into name and extension
  set _name=%%~ni
  set _ext=%%~xi
  rem pad the counter to 2 digits
  set "y=0!x!"
  set "y=!y:~-2!"
  rem do the rename
  ren "%%i" "!_name!-!y!!_ext!"
  increment counter
  set /a "x+=1"
  )
endlocal

Limitações:

  • Apenas processa .jpg e .png no diretório de trabalho atual.
  • processa somente até 99 arquivos.

Leitura Adicional

  • Um índice A-Z da linha de comando do Windows CMD - Uma excelente referência para todas as coisas relacionadas à linha do Windows cmd.
  • dir - Exibe uma lista de arquivos e subpastas.
  • enabledelayedexpansion - Expansão com atraso fará com que as variáveis sejam expandidas em tempo de execução e não no tempo de análise.
  • para / f - Comando Loop contra os resultados de outro comando.
  • parâmetros - Um argumento de linha de comando (ou parâmetro) é qualquer valor passado para um script em lote.
  • definir - Exibir, definir ou remover variáveis de ambiente do CMD. As alterações feitas com o SET permanecerão apenas pela duração da sessão atual do CMD.
  • variáveis - Extrai parte de uma variável (substring).
por 02.04.2016 / 20:57

Tags