Как переименовать файл с помощью CMD "Track ?.mp3" в "T00?.mp3"

Как переименовать файл с помощью CMD "Track ?.mp3" в "T00?.mp3"

У меня есть несколько mp3-файлов, например:

Track [number of track].mp3например Track 1.mp3-Track 11.mp3

Я хочу переименовать их в:

T00[number of track]например T001.mp3-T011.mp3

Я попытался переименовать треки 1-9 следующим образом:

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

но у меня есть пробел в имени файла ( T00 1.mp3)

Обновление: Я пытаюсь написать код для удаления пробелов, вот мой код

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

)

Я получил следующее сообщение:

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

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

str = ""

2str = ""

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


.
.
.

Я не знаю, в чем я не прав, это мой первый раз, когда я использую Batch Script.

решение1

Использование PowerShell сРегулярное выражение заменитьиФормат строки

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

Ключевые части — это -replace "^\D+","", которые ищут все нецифровые символы с начала имени файла (но без расширения) и удаляют их. Во-вторых, скрипт добавляет столько нулей, сколько нужно, с помощью "{0:D3}" -f. Остальное — просто.

Читатьоба связанныйисточники, если вы хотите узнать больше.

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

Редактировать:Исправлена ​​небольшая ошибка RegEx. Раньше 99 ballons 01.mp3становится T9901.mp3.
Теперь это01 » 001 » T001.mp3

решение2

Если вы хотите использовать Linux или Mac OSX для решения своей проблемы, вы можете сделать следующее:

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

Я проверил это на 25 файлах, которые я ранее создал с помощью этой команды.

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

решение3

Если это поможет, в Total Commander (Windows) есть отличный инструмент для группового переименования (выберите нужные файлы, затем нажмите Ctrl+M).

Связанный контент