在 Explorer 中添加“右键单击 .WAV 文件,转换为 MP3”扩展

在 Explorer 中添加“右键单击 .WAV 文件,转换为 MP3”扩展

我在 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 文件。

答案1

假设 ffmpeg.exe 包含在路径变量中,使用

cmd /q /c 对于 ("%1") 中的 %%I,执行 ffmpeg -i %%I -acodec libmp3lame -vn -ar 44100 -ac 2 -ab 256k "%%~nI.mp3"
作为没有 bat 文件的单行程序。

答案2

这是一个使用 .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"

答案3

您无需破解注册表,只需将.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="${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

相关内容