![Как переименовать файл с помощью CMD "Track ?.mp3" в "T00?.mp3"](https://rvso.com/image/1400500/%D0%9A%D0%B0%D0%BA%20%D0%BF%D0%B5%D1%80%D0%B5%D0%B8%D0%BC%D0%B5%D0%BD%D0%BE%D0%B2%D0%B0%D1%82%D1%8C%20%D1%84%D0%B0%D0%B9%D0%BB%20%D1%81%20%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E%20CMD%20%22Track%20%3F.mp3%22%20%D0%B2%20%22T00%3F.mp3%22.png)
У меня есть несколько 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).