J'ai créé une clé dans le registre Windows:
HKEY_CLASSES_ROOT\*\Shell\Convert to MP3\command
avec:
"D:\tools\ffmpeg.exe" -i "%1" -acodec libmp3lame -vn -ar 44100 -ac 2 -ab 256k "%1.mp3"
Cela fonctionne, sauf que le nom du fichier n'est pas exactement ce que je veux:
Entrée:, test.wav
sortie:test.wav.mp3
alors que je voudrais que le nom de fichier de sortie soit test.mp3
.
J'ai aussi essayé avec:
"D:\tools\ffmpeg.exe" ... "%~n1.mp3"
comme dans cette réponse , mais cela ne fonctionne pas: la sortie est %~n1.mp3
alors!
Comment supprimer l'extension originale comme celle-ci et la remplacer par .mp3?
PS: Je cherche une solution sans impliquer un fichier .bat, mais uniquement le registre. Si ce n'est pas possible, vous pouvez utiliser un fichier chauve-souris.
%~n1
choses sont-elles prises en charge uniquement dans le fichier cmd / bat?Réponses:
Supposé que ffmpeg.exe est inclus par la variable de chemin, utilisez
comme une ligne sans fichier de batte.la source
Voici une solution avec un fichier .BAT (je ne sais pas si c'est possible sans fichier BAT). La clé est d'utiliser
%~n1.mp3
, comme expliqué ici .Fichier
____LameMP3me.bat
:Dans
HKEY_CLASSES_ROOT\*\Shell\Lame MP3 me!\command
:la source
Au lieu de pirater le registre, vous pouvez simplement insérer le
.bat
fichier (ou un.lnk
fichier pointant vers lui)%APPDATA%\Microsoft\Windows\SendTo
.Voici une solution cygwin + bash pour résoudre le problème de l’extension de fichier, nécessite exactement une ligne de code supplémentaire à l’ adresse https://www.tldp.org/LDP/abs/html/string-manipulation.html
Vous commenceriez par
c:\cygwin\bin\bash.exe <scriptname> <filename>
la source
SendTo
commande de menu contextuel vs ne change rien au problème initial (c’est-à-dire que les fichiers sont nomméstest.wav.mp3
au lieu detest.mp3
). Également utiliser SendTo est plus long lorsque vous le faites beaucoup (clic droit, cliquez sur SendTo, trouver le bon élément) plutôt qu’un élément de menu contextuel direct.