2

Я создал ключ в реестре 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.

3 ответа3

1

Вместо взлома реестра вы можете просто поместить файл .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
1

Предполагается, что ffmpeg.exe включен в переменную пути, используйте

cmd /q /c for %%I in ("%1") do ffmpeg -i %%I -acodec libmp3lame -vn -ar 44100 -ac 2 -ab 256k "%%~nI.mp3"
как однострочник без файла летучей мыши.
1

Вот решение с.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"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .