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.