
다양한 폴더에 다양한 종류의 미디어 파일(예: .wav, .mp4)이 있습니다. 배치 파일을 사용하여 다음과 같이 기간 목록을 생성하고 싶습니다.
D:\Some Folder 1\Movie File.mp4 | 2:15:23
E:\Some Folder 2\Audio File.mp3 | 0:08:17
필요한 경우 별도의 드라이브에서 배치 파일을 수동으로 다시 실행합니다. 목록에는 | Excel에서 목록을 구문 분석할 때 기간과 파일 경로 및 이름을 쉽게 분리하기 위한 기호입니다.
다음과 같이 단일 폴더 내에서 지정된 파일 형식 목록을 제공하는 MediaInfo 명령이 있습니다.
mediainfo --output=General;%FileName%.%FileExtension%^|%Duration/String3%\r\n *.mp3 *.wav
내 문제는 (1) 폴더의 가능한 파일 형식 집합이 개방형이라는 것입니다. .mp3 및 .wav(이 예에서는)가 모든 항목을 캡처할 것이라고 확신할 수 없습니다. (2) 현재 요구 사항을 충족하고 향후 요구 사항에 맞게 명령을 수정할 수 있다고 확신할 수 있는 자세한 MediaInfo 문서를 찾을 수 없습니다(예:칼리쉬어); (3) 나는 일괄 재귀 마법사가 아닙니다. 즉, 에 설명된 대로 해당 명령을 for 루프로 래핑하는 여러 방법을 시도했음에도 불구하고1 2StackExchange 토론뿐만 아니라오래된 Doom9 포럼을 추천했지만 usebackq
여러 폴더에서 작동하지 않습니다. (4) 어쨌든 나는 이러한 도구를 배우기 위한 장기적인 노력의 일환으로 ffmpeg/ffprobe에서 이 작업을 수행하는 방법을 배우는 것이 이상적입니다.
ffprobe에서 이것이 단일 파일에 대해 작동한다는 것을 알았습니다.
ffprobe -i "input.mp4" -show_entries format=duration -v quiet -of csv="p=0" -sexagesimal
덜 우아하지만 아마도 더 적응하기 쉬운 대안으로배치 파일-- 동일한 출력 줄에서 파일 이름과 지속 시간을 얻는 방법이 명확하지 않았지만. 그러나 MediaInfo와 마찬가지로 이를 여러 파일로 확장하거나(예: "input.mp4"를 "*.*"로 대체) 위에서 인용한 방법을 사용하여 반복적으로 만들 수는 없습니다. 예를 들어, 나는 다음과 같은 적응을 시도했습니다.잭 앨런의 제안:
for /R %f in (*.*) do ffprobe -i *.* -show_entries format=duration -v quiet -of csv="p=0" -sexagesimal
하지만 파일 정보가 생성되지 않았습니다.
내 질문:배치 파일에서 ffmpeg/ffprobe를 사용하여 여러 폴더에서 반복적으로 가져온 전체 경로 및 기간이 포함된 미디어 파일 목록을 생성하려면 어떻게 해야 합니까?
답변1
배치 파일에서 다음을 시도해 보십시오.
for /R %%i in (*) do ffprobe -i "%%~fi" -show_entries format=duration -v quiet -of csv="p=0" -sexagesimal
명령 프롬프트에서 다음을 시도해 보십시오.
for /R %i in (*) do ffprobe -i "%~fi" -show_entries format=duration -v quiet -of csv="p=0" -sexagesimal
답변2
여기에도 동일한 요구 사항이 있습니다. 어려움을 겪고 있었기 때문에 답변에 매우 관심이 있었고 몇 번 시도한 후에 여기에 우아하지 않은 솔루션이 있지만 저에게 효과적이었습니다.
for /R %f in (*) do (echo "%~ff" >>"filename.txt" & ffprobe -i "%~ff" -show_entries format=duration -v Quiet -of csv="p=0" -sexagesimal >>"filename.txt")