Batch renomeia arquivos para números com zeros à esquerda [duplicados]

1

Estou voltando ao Windows depois de vários anos no Linux (sou um caminhoneiro e a empresa que acabo de alugá-lo, possui recursos em seu site de carregamento que só funcionam no IE e apenas no modo de compatibilidade ligado).

Eu também ouço muitos livros de áudio. Eu os copio do CD e os baixo do Audible, então eu recebo uma boa lista de arquivos MP3. A maioria deles tem nomes como "Capítulo 3 - No Vazio". Mas o meu estéreo de caminhão, que reproduzirá arquivos MP3 em uma unidade flash USB, só irá classificar os quatro primeiros caracteres do nome do arquivo. Uma lista de 39 MP3s com nomes de arquivos que começam com "Chapter" será reproduzida em ordem aleatória. Portanto, preciso renomear esses arquivos para algo que comece com, digamos, um número de 2 ou 3 dígitos.

No Linux, fiz isso em um script bash para realizar isso:

#!/bin/bash
i=1
for file in *.mp3
do
        j=$( printf "%03" "$i" )
        mv "$file" "$j.mp3"
        (( i++ ))
done

Isso me daria um diretório de arquivos chamados 001.mp3, 002.mp3, 003.mp3 e assim por diante. Mas não sei como fazer isso no Windows.

Lembro vagamente de poder fazer algo usando arquivos em lote no Windows, mas a sintaxe é toda diferente e as ferramentas disponíveis para chamar são diferentes (não há sed ou awk no Windows, infelizmente). Alguém sabe onde me apontar para descobrir isso?

Obrigado @

    
por Jeff Lanthripp 14.01.2013 / 11:34

1 resposta

1

Sua resposta existe dentro do corpo de Como renomeio um monte de arquivos no Prompt de Comando?

Embora seja para o prompt de comando, há exemplos de scripts em lote, que incluímos abaixo

@echo off
setlocal EnableDelayedExpansion
set i=0
for %%a in (*.jpg) do (
    set /a i+=1
    ren %%a !i!.new
)
ren *.new *.jpg

Outro exemplo

@echo off
SET COUNT=1
SET PREFIX=Photos
FOR /f "tokens=*" %%G IN ('dir /b *.jpg') DO (call :renum "%%G")
GOTO :eof

:renum
 ren %1 %PREFIX%_%count%.jpg
 set /a count+=1
 GOTO :eof
    
por 14.01.2013 / 11:54