
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로 바꾸는 방법은 무엇입니까?
추신: .bat 파일은 포함하지 않고 레지스트리만 포함하는 솔루션을 찾고 있습니다. 가능하지 않다면 bat 파일을 사용해도 괜찮습니다.
답변1
ffmpeg.exe가 경로 변수에 포함되어 있다고 가정하고,
cmd /q /c("%1")의 %%I에 대해 do ffmpeg -i %%I -acodec libmp3lame -vn -ar 44100 -ac 2 -ab 256k "%%~nI.mp3"박쥐 파일 없이 한 줄로 작성됩니다.
답변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