Creé una clave en el registro de Windows:
HKEY_CLASSES_ROOT\*\Shell\Convert to MP3\command
con:
"D:\tools\ffmpeg.exe" -i "%1" -acodec libmp3lame -vn -ar 44100 -ac 2 -ab 256k "%1.mp3"
Funciona, excepto que el nombre de archivo no es exactamente lo que quiero:
Entrada: test.wav
Salida:test.wav.mp3
mientras que me gustaría que el nombre de archivo de salida sea test.mp3
.
También probé con:
"D:\tools\ffmpeg.exe" ... "%~n1.mp3"
como en esta respuesta , pero no funciona: ¡la salida es %~n1.mp3
entonces!
¿Cómo eliminar la extensión original como esta y reemplazarla por .mp3?
PD: Estoy buscando una solución sin involucrar un archivo .bat, pero solo el registro. Si no es posible, está bien usar un archivo bat.
%~n1
cosas solo se admiten en el archivo cmd / bat?Respuestas:
Suponiendo que ffmpeg.exe está incluido por la variable de ruta, use
como una línea sin archivo bat.fuente
Aquí hay una solución con un archivo .BAT (no sé si es posible sin un archivo BAT). La clave es usar
%~n1.mp3
, como se explica aquí .Archivo
____LameMP3me.bat
:En
HKEY_CLASSES_ROOT\*\Shell\Lame MP3 me!\command
:fuente
En lugar de hackear el registro, simplemente puede colocar el
.bat
archivo (o un.lnk
archivo que lo señale)%APPDATA%\Microsoft\Windows\SendTo
.Aquí hay una solución cygwin + bash para el problema de extensión de archivo, requiere exactamente una línea de código adicional gracias a https://www.tldp.org/LDP/abs/html/string-manipulation.html
Lo comenzarías por
c:\cygwin\bin\bash.exe <scriptname> <filename>
fuente
SendTo
comando de menú contextual vs. no cambia nada al problema original (es decir, tener los archivos nombrados entest.wav.mp3
lugar detest.mp3
). También usar SendTo es más largo cuando se hace mucho (clic derecho, clic en SendTo, encontrar el elemento correcto) que un elemento directo del menú contextual.