Come rinominare il file usando CMD "Track? .Mp3" in "T00? .Mp3"


0

Ho più file mp3 in questo modo:

Track [number of track].mp3per esempio. Track 1.mp3-Track 11.mp3

Voglio rinominarli in:

T00[number of track]per esempio. T001.mp3-T011.mp3

Ho provato a rinominare 1-9 tracce con questo:

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

ma ho spazio nel nome file ( T00 1.mp3)

Aggiornamento: sto cercando di scrivere il codice per rimuovere lo spazio, questo è il mio codice

@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%"

)

Il messaggio che ho ricevuto è:

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

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

str = ""

2str = ""

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


.
.
.

Non so cosa sbaglio, questa è la prima volta che utilizzo Batch Script


Questo può aiutare dostips.com/DtTipsStringManipulation.php#Snippets.Replace Dovresti essere in grado di sostituire lo spazio bianco con niente
— Dave

@DaveRook Non so come scrivere un file bat, lo scriveresti per me, per favore?
— Zen3515

3
No, non sono qui per fare il tuo lavoro! Ti ho dato un link che mostra come fare la manipolazione delle stringhe che dovrebbe aiutare
— Dave

Non so perché ci sia stato un downvote. La domanda è interessante e sicuramente un problema comune. Ma non ho idea di come risolverlo in Windows. In Linux nessun problema.
— Erik,

Ci sono molte risorse per imparare a scrivere file "BAT" su Internet (e sospetto che alcuni di essi siano utili); puoi trovare migliaia di esempi proprio qui su Super User. Ti darò un suggerimento: digitare help setlocal(o setlocal /?) e provare a capire cosa setlocal enabledelayedexpansionsignifica. Quindi capire se ha senso usare !str!invece di %str%. Un consiglio più generale è che non dovresti lasciare che uno script faccia qualcosa fino a quando non hai eseguito il debug della logica, quindi sai che farà la cosa giusta. Ad esempio, sostituire ren …con echo ren ….
— G-Man,

Risposte:


2

Utilizzando PowerShell con Regex sostituisci e formatta stringa

$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
    }

Le parti chiave sono -replace "^\D+",""che cerca tutte le non cifre dall'inizio del nome file (ma senza l'estensione) e le rimuove. In secondo luogo, lo script aggiunge tutti gli zeri necessari "{0:D3}" -f. Il riposo è roba facile.

Leggi entrambe le fonti collegate se vuoi saperne di più.

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

Modifica: risolto piccolo errore RegEx. Prima 99 ballons 01.mp3diventa T9901.mp3.
Adesso è01 » 001 » T001.mp3


0

Se si desidera utilizzare Linux o Mac OSX per risolvere il problema, è possibile:

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

L'ho testato su 25 file che ho creato in precedenza con questo comando

for ((i=1; i<=25; i++)); do touch "Track $i.mp3"; done

0

Se questo aiuta Total Commander (Windows) ha un ottimo strumento multi-rinomina (selezionare i file desiderati quindi Ctrl + M).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.