
Я создал ключ в реестре Windows:
HKEY_CLASSES_ROOT\*\Shell\Convert to MP3\command
с:
"D:\tools\ffmpeg.exe" -i "%1" -acodec libmp3lame -vn -ar 44100 -ac 2 -ab 256k "%1.mp3"
Это работает, за исключением того, что имя файла не совсем то, что мне нужно:
Ввод test.wav
, вывод:test.wav.mp3
в то время как я хотел бы, чтобы имя выходного файла было test.mp3
.
Я также пробовал с:
"D:\tools\ffmpeg.exe" ... "%~n1.mp3"
как в этом ответе, но это не работает: выход %~n1.mp3
тогда!
Как удалить оригинальное расширение и заменить его на .mp3?
PS: Я ищу решение без использования .bat-файла, а только реестра. Если это невозможно, то можно использовать bat-файл.
решение1
Предположим, что ffmpeg.exe включен в переменную пути, используйте
cmd /q /c для %%I в ("%1") сделать ffmpeg -i %%I -acodec libmp3lame -vn -ar 44100 -ac 2 -ab 256k "%%~nI.mp3"как однострочный без bat-файла.
решение2
Вот решение с .BAT файлом (не знаю, возможно ли это без BAT файла). Ключ в том, чтобы использовать %~n1.mp3
, как объясненоздесь.
Файл ____LameMP3me.bat
:
"D:\Documents\software\____PORTABLE\____useful-tools\ffmpeg.exe" -i %1 -acodec libmp3lame -vn -ar 44100 -ac 2 -ab 256k "%~n1.mp3"
В HKEY_CLASSES_ROOT\*\Shell\Lame MP3 me!\command
:
"D:\Documents\software\____PORTABLE\____useful-tools\____LameMP3me.bat" "%1"
решение3
Вместо того, чтобы лезть в реестр, вы можете просто поместить .bat
файл (или .lnk
файл, указывающий на него) в %APPDATA%\Microsoft\Windows\SendTo
.
Вот решение cygwin + bash для проблемы с расширением файла, требует ровно одну дополнительную строку кода благодаряhttps://www.tldp.org/LDP/abs/html/string-manipulation.html
Вы бы начали это сc:\cygwin\bin\bash.exe <scriptname> <filename>
#!/bin/bash
FILE_NAME="${1%.*}"
"/cygdrive/d/tools/ffmpeg.exe" -i "\"$1\"" -acodec libmp3lame -vn -ar 44100 -ac 2 -ab 256k "\"${FILE_NAME}.mp3\""
#keep the console window open, uncomment if not necessary
read