Добавить расширение "Щелкните правой кнопкой мыши на файле .WAV, конвертировать в MP3" в проводнике.

620
Basj

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

2
Используйте файл .cmd и сделайте это оттуда. Это должно работать тогда. LPChip 6 лет назад 0
@LPChip Разве нет способа сделать это только из одной строки реестра? Поддерживаются ли вещи `% ~ n1` * только * в файле cmd / bat? Basj 6 лет назад 0
Насколько я знаю, да. LPChip 6 лет назад 0

3 ответа на вопрос

1
Basj

Вот решение с файлом .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" 
1
T Nierath

Вместо взлома реестра вы можете просто поместить .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="$"  "/cygdrive/d/tools/ffmpeg.exe" -i "\"$1\"" -acodec libmp3lame -vn -ar 44100 -ac 2 -ab 256k "\"$.mp3\""  #keep the console window open, uncomment if not necessary read 
Спасибо за ваш ответ, но использование команды `SendTo` против контекстного меню ничего не меняет в исходной проблеме (т.е. наличие файлов с именем` test.wav.mp3` вместо `test.mp3`). Кроме того, использование SendTo более длительное время, когда вы делаете это много (правый клик, щелкните SendTo, найдите нужный элемент), чем прямое контекстное меню. Basj 6 лет назад 0
Я знаю, но имейте в виду, что люди могут прийти в это место через поиск в Google. Мне бы очень хотелось, чтобы я узнал об этом маленьком трюке гораздо раньше. T Nierath 6 лет назад 0
Относительно вашего имени файла проблемы. Я никогда не изучал Power Shell, так что я делаю, устанавливаю Cygwin и запускаю более сложные вещи в виде скрипта bash. Но это вряд ли решение для вас, я думаю. T Nierath 6 лет назад 0
@Basj добавил решение bash на всякий случай T Nierath 6 лет назад 0
1
guest-vm

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

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

Размещено по вашему запросу. Как пользователь> 2k, я должен сосредоточиться на более продвинутых командах и дать шанс новичкам ответить, поэтому я изначально разместил комментарий. Если вы дадите мне эту награду, я верну ее вам, спонсируя ваш следующий интересный вопрос. guest-vm 6 лет назад 0