Como renomear o arquivo usando o CMD “Track? .mp3” para “T00? .mp3”

0

Eu tenho vários arquivos mp3 assim:

Track [number of track].mp3 ex. Track 1.mp3 - Track 11.mp3

Quero renomeá-los para:

T00[number of track] ex. T001.mp3 - T011.mp3

Eu tentei renomear de 1 a 9 faixas com isso:

ren "Track ?.mp3" "T00   ?.mp3"

mas tenho espaço no nome do arquivo ( T00 1.mp3 )

Atualização: estou tentando escrever o código para remover espaço, este é o meu código

@echo off
setlocal enabledelayedexpansion

for /r %%G in ("T00   ?.mp3") do (

pause

echo -----------------------In loop----------------------------
echo Working with "%%G"

pause

set str=%%G
echo str is = "%str%"

pause

set str=%str:   =0% //replace "   " with 0 
echo 2str is = "%str%"
pause

ren "%%~G" "%str%"

)

A mensagem que recebi é:

-----------------------In loop----------------------------

working with "C:\test\T00   1.mp3"

str = ""

2str = ""

A duplicate file name exists, or the file
cannot be found.


.
.
.

Eu não sei o que estou errado, esta é a minha primeira vez que uso o Batch Script

    
por Zen3515 07.03.2014 / 11:12

3 respostas

2

Usando o PowerShell com Substituir e Formatar string

$strPath = "C:\my\folder\*.mp3"

Get-Childitem $strPath | ForEach-Object { 
    $onlyNumbers = $_.Basename -replace ".*\D+",""  
    $WithZeros = "{0:D3}" -f [int]$onlyNumbers
    $fileName = "T$WithZeros.mp3"
    Rename-Item $_ $fileName
    }

As partes principais são -replace "^\D+","" , que pesquisa todos os não dígitos desde o início do nome do arquivo (mas sem a extensão) e os remove. Em segundo lugar, o script anexa quantos zeros forem necessários com "{0:D3}" -f . Resto é coisa fácil.

Leia ambos link de fontes, se você quiser saber mais.

Old name          New name
Track 1.mp3       T001.mp3
Track 11.mp3      T011.mp3
Track 111.mp3     T111.mp3

Editar: Corrigido pequeno erro de RegEx. Antes que 99 ballons 01.mp3 se torne T9901.mp3 .
Agora é 01 » 001 » T001.mp3

    
por 07.03.2014 / 17:54
0

Se você quiser usar o Linux ou o Mac OSX para resolver seu problema, faça o seguinte:

count=1
for i in $(ls -v); do
  number=$(printf "%05d" $count)
  ((count++))
  mv $i T00$number.mp3
done

Eu testei em 25 arquivos que eu criei anteriormente com este comando

for ((i=1; i<=25; i++)); do touch "Track $i.mp3"; done
    
por 07.03.2014 / 15:43
0

Se isso ajudar o Total Commander (Windows), terá uma ótima ferramenta de renomeação (selecione os arquivos desejados e depois Ctrl + M).

    
por 07.03.2014 / 16:59