Статьи

Конвертируем flac в mp3 из командной строки

Решил раз и навсегда закрыть для себя вопрос конвертации *.flac музыки в mp3 формат. Используя знания из статей под тэгом cmd, а именно из статей Как организовать цикл в bat или cmd файле и Как узнать размер и дату файла из командной строки подробно распишу как организовать конвертирование файлов из формата FLAC и формат MP3, находящихся в указанной в параметре cmd-скрипта папке и подпапках. На написание этой статьи меня подтолкнула статья на хабре, только я буду делать скрипт под Windows. Для конвертирования нам понадобятся установленные flac и lame, lame качал с сайта rarewares.org В конце статьи я выложу архив со скриптом и нужными программами.

@echo off
echo flac2mp3.cmd [-r] папка
echo [-r] - удалять исходные flac файлы (не обязательно)
echo папка - папка с flac файлами. Обрабатываются так же и вложенные папки. Папка с пробелами указывается в кавычках - "папка"

set r=%1
set workdir=%2
if not exist %workdir% set workdir=%r%
if exist %r% set workdir=%r%
if not exist %workdir% (
echo Каталог не существует
exit
)

if /i %r%==-r (
  set r=1 
) else (
set r=0
)

for /f "tokens=*" %%a in (' dir /s /b %workdir%\*.flac ') do (
echo %%~da %%~pa %%~na
echo "%%~da%%~pa"%%~na.wav
flac -d -f "%%~a"
call :pack "%%~a"
rem lame -b 320 "%%~da%%~pa%%~na.wav" "%%~da%%~pa%%~na.mp3"
del /q "%%~da%%~pa%%~na.wav"
if %r%==1 del /q "%%~a"
)
exit

:pack
for /f "tokens=* delims== " %%i in ('metaflac.exe --show-tag=ARTIST %1 ') do set %%i
for /f "tokens=* " %%i in ('metaflac.exe --show-tag=TITLE %1 ') do set %%i
for /f "tokens=* " %%i in ('metaflac.exe --show-tag=ALBUM %1 ') do set %%i
for /f "tokens=* " %%i in ('metaflac.exe --show-tag=GENRE %1 ') do set %%i
for /f "tokens=* " %%i in ('metaflac.exe --show-tag=TRACKNUMBER %1 ') do set %%i
for /f "tokens=* " %%i in ('metaflac.exe --show-tag=DATE %1 ') do set %%i
echo lame -m j -q 0 -V 0 -s 44.1 --tt "%TITLE%" --tn "%TRACKNUMBER%" --ta "%ARTIST%" --tl "%ALBUM%" --ty "%DATE%" --tg "%GENRE%" "%~d1%~p1%~n1.wav" "%~d1%~p1%~n1.mp3"
lame -m j -q 0 -V 0 -s 44.1 --tt "%TITLE%" --tn "%TRACKNUMBER%" --ta "%ARTIST%" --tl "%ALBUM%" --ty "%DATE%" --tg "%GENRE%" "%~d1%~p1%~n1.wav" "%~d1%~p1%~n1.mp3"
exit /b 0