Agregue una extensión "Haga clic derecho en un archivo .WAV, Convertir a MP3" al Explorador

2

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.wavSalida: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.mp3entonces!

¿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.

Basj
fuente
Use un archivo .cmd y hágalo desde allí. Debería funcionar entonces.
LPChip
@LPChip ¿No hay una manera de hacerlo solo desde una sola línea en el registro? ¿Las %~n1cosas solo se admiten en el archivo cmd / bat?
Basj
Que yo sepa, sí.
LPChip

Respuestas:

1

Suponiendo que ffmpeg.exe está incluido por la variable de ruta, use

cmd / q / c para %% I en ("% 1") do ffmpeg -i %% I -acodec libmp3lame -vn -ar 44100 -ac 2 -ab 256k "%% ~ nI.mp3"
como una línea sin archivo bat.

invitado-vm
fuente
Publicado en su solicitud. Como usuario> 2k, debería centrarme en comandos más avanzados y dar oportunidad a los recién llegados a responder, por lo tanto, inicialmente publiqué comentarios. Si me otorgas esta recompensa, te la reembolsaré patrocinando tu próxima pregunta de interés.
guest-vm
1

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:

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

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

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

En lugar de hackear el registro, simplemente puede colocar el .batarchivo (o un .lnkarchivo 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>

#!/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
T Nierath
fuente
Gracias por su respuesta, pero el uso del SendTocomando de menú contextual vs. no cambia nada al problema original (es decir, tener los archivos nombrados en test.wav.mp3lugar de test.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.
Basj
Lo sé, pero ten en cuenta que las personas pueden venir a este lugar buscando en google. Ciertamente desearía haber sabido sobre este pequeño truco mucho antes.
T Nierath
En cuanto a su problema de nombre de archivo. Nunca aprendí power shell, así que lo que hago es instalar cygwin y ejecutar cosas más complicadas como un script bash. Pero eso no es una solución para ti, supongo.
T Nierath
@Basj agregó la solución bash por si acaso
T Nierath