
ffmpeg가 설치되어 있고 배치 파일을 사용하여 MP4 h.264를 MKV x.265로 성공적으로 변환했지만 FLAC 파일을 메타데이터가 필요 없는 320kbps MP3로 변환하는 데 문제가 있습니다. 하지만많은게시물설명하다Linux에서 이 작업을 수행하는 방법은 Windows의 명령 프롬프트에서 실행될 때 해당 스크립트가 이 문제를 해결하지 못합니다.
MP3로 변환하기 위해 제가 만든 명령줄 스크립트에는 다음 줄이 있습니다.
for %%A in (*.flac) do ffmpeg -i "%%~nA.flac" -c:v copy -b:a 320k "%%~nA.mp3"
Powershell에 능숙하지 않아 명령줄 솔루션을 찾고 있습니다. 메타데이터가 살아남는지 여부는 상관하지 않습니다.
현재 디렉터리와 그 아래의 모든 하위 디렉터리에 있는 모든 FLAC 파일을 변환하려면 어떻게 수정해야 합니까(Linux의 경우 위의 첫 번째 링크 참조)?
답변1
다음 .bat
파일이 이를 수행해야 합니다:
for /R %%A in (*.flac) do ffmpeg -i "%%A" -c:v copy -b:a 320k "%%~dpnA.mp3"
다음 스크립트를 사용하여 먼저 테스트할 수 있습니다.
for /R %%A in (*.flac) do echo ffmpeg -i "%%A" -c:v copy -b:a 320k "%%~dpnA.mp3"
위 대체에 대한 설명(위 스크립트에 결합되어 있음):
%~dA
- %A를 드라이브 문자로만 확장합니다.%~pA
- %A를 경로로만 확장합니다.%~nA
- %A를 파일 이름으로만 확장합니다.
답변2
@echo off
cd /d "%~dp0" & setlocal
set "_flag1=-c:v copy -b:a 320k"
set "_flag2=-hide_banner -v error -stats"
set "_ffmpeg="C:\Program Files\FFmpeg\Bin\FFmpeg.exe" -i"
for /r %%i in (*.Flac)do %_ffmpeg% "%%~i" %_flag1% "%%~dpni.mp3" %_flag2%
%__AppDir__%timeout.exe /t 5 /nobreak |echo=Is Done! & endlocal & goto :eof
- 변수를 정의/사용하지 않고도 동일합니다.
@echo off & setlocal & cd /d "%~dp0"
for /r %%i in (*.Flac)do "C:\Program Files\FFmpeg\Bin\FFmpeg.exe" -i ^
"%%~i" -c:v copy -b:a 320k "%%~dpni.mp3" -hide_banner -v error -stats
%__AppDir__%timeout.exe /t 5 /nobreak |echo=Is Done! & endlocal & goto :eof
꼭 사용해야 하나요?.Flac두 배?
그리고 변환된 모든 파일을 항상 같은 폴더(작업 디렉터리)에 저장하시겠습니까?
for %%A in (.flac) do ffmpeg -i "%%~nA.flac" -c:v copy -b:a 320k "%%~nA.mp3"
for /R %% A in (
.flac)
ffmpeg -i "%%~pI%%~nA.flac" -b:a 320k "%%~nA.mp3"
이전에 언급한 것과 동일한 오류로 인해 from이 실패합니다...
1.제거 n
하고.flac
for %%A in (*.flac) do ffmpeg -i "%%~nA.flac" -c:v copy -b:a 320k "%%~nA.mp3"
- 관찰: 1루프
For
변수는"%%~A"
입력 파일의 전체 경로를 제공하므로 이름을 자르거나 명시적으로 추가할 필요가 없습니다.
"%~Drive\\Path\\Name.Flac"
"%%~dpn.Flac"
"%%~N.Flac"
rem :: use
ffmpeg -i "%%#~A" ...
2.사용 For /R
:
For /R %%i in (*.flac)do ...
삼.drive:\folder\
다음과 같은 경우에는 이름뿐만 아니라 대상 인코딩 파일을 저장하기 위해 정의/추가를 고려하십시오 .~ 아니다박쥐가 있는 것과 동일한 작업 디렉토리에 저장합니다.
... (...)do.... ffmpeg ... "%%~dpni.mp3"
- 관찰: 2
.mp3
현재/작업 디렉토리에 저장하려면 다음을 사용할 수 있습니다.
... (...)do.... ffmpeg ... "%%~ni.mp3"
... (...)do.... ffmpeg ... ".\%%~ni.mp3"
... (...)do.... ffmpeg ... "%CD%\%%~ni.mp3"
- 관찰:: 3모든 메타데이터는 살아남습니다!!
하나는 다음을 사용하는 것이 좋습니다.For /F + where /R
@echo off
setlocal & cd /d "%~dp0"
for /f delims^= %%i in ('
2^>nul %__AppDir__%where.exe /r . *.flac
')do "C:\Program Files\FFmpeg\Bin\FFmpeg.exe" -i "%%~i" -c:v ^
copy -b:a 320k "%%~dpni.mp3" -hide_banner -v error -stats
%__AppDir__%timeout.exe 5 /nobreak |echo=Is Done! & endlocal & goto :eof
- 관찰:: 4를 사용하는 구분선의 경우
^
아무 것도 사용하지 마십시오.공백/문자캐럿 뒤:
추가 리소스: