
我在 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 for %%I in ("%1") do 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