Adicione uma extensão "Clique com o botão direito em um arquivo .WAV, Converter para MP3" ao Explorer

Adicione uma extensão "Clique com o botão direito em um arquivo .WAV, Converter para MP3" ao Explorer

Criei uma chave no registro do Windows:

HKEY_CLASSES_ROOT\*\Shell\Convert to MP3\command

com:

"D:\tools\ffmpeg.exe" -i "%1" -acodec libmp3lame -vn -ar 44100 -ac 2 -ab 256k "%1.mp3"

Funciona, exceto que o nome do arquivo não é exatamente o que eu quero:

Entrada: test.wav, Saída:test.wav.mp3

enquanto eu gostaria que o nome do arquivo de saída fosse test.mp3.

Eu também tentei com:

"D:\tools\ffmpeg.exe" ... "%~n1.mp3"

como nesta resposta, mas não funciona: a saída é %~n1.mp3then!

Como remover a extensão original assim e substituir por .mp3?

PS: Estou procurando uma solução sem envolver um arquivo .bat, mas apenas o registro. Se não for possível, não há problema em usar um arquivo bat.

Responder1

Supondo que ffmpeg.exe esteja incluído pela variável de caminho, use

cmd /q /c para %%I in ("%1") faça ffmpeg -i %%I -acodec libmp3lame -vn -ar 44100 -ac 2 -ab 256k "%%~nI.mp3"
como one-liner sem arquivo bat.

Responder2

Aqui está uma solução com um arquivo .BAT (não sei se é possível sem um arquivo BAT). A chave é usar %~n1.mp3, conforme explicadoaqui.

Arquivo ____LameMP3me.bat:

"D:\Documents\software\____PORTABLE\____useful-tools\ffmpeg.exe" -i %1 -acodec libmp3lame -vn -ar 44100 -ac 2 -ab 256k "%~n1.mp3"

Em HKEY_CLASSES_ROOT\*\Shell\Lame MP3 me!\command:

"D:\Documents\software\____PORTABLE\____useful-tools\____LameMP3me.bat" "%1"

Responder3

Em vez de hackear o registro, você pode simplesmente colocar o .batarquivo (ou um .lnkarquivo apontando para ele) em %APPDATA%\Microsoft\Windows\SendTo.

Aqui está uma solução cygwin + bash para o problema de extensão de arquivo, requer exatamente uma linha adicional de código graças ahttps://www.tldp.org/LDP/abs/html/string-manipulation.html

Você começaria porc:\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

informação relacionada