2014-11-23 6 views
0

같은 위치에서 동일한 이름의 .avi 파일로 폴더 내에서 감지 한 모든 비디오 파일 (하위 폴더도 스캔 함)을 변환하는 일종의 스크립트를 만들려고합니다. 원본 파일을 제거하십시오. 나는 어떤 프로그래밍/스크립팅에 대해서도 cmd를 많이 사용하지 않았으므로 나는 꽤 단순한 구문 문제라고 의심되는 것을 넘어서고있다.재귀 ffmpeg 변환기 만들기

누구나 인코딩 및 ffmpeg에 익숙하면 인코딩 옵션이 잘못되었는지 (나는 현재 어둠 속에서 어렴풋이 보임) 지적 해주십시오. this thread를 사용

, 나는 무언가가 현재 닮은 함께 일하고 있어요 :

dir/b/s *.(mkv|mp4|m4v|wmv) >listing.txt #Make a list of all the files with certain extensions, for reading. 
for /F "delims=;" %%F in (listing.txt) do ffmpeg.exe -i "%%F" -c:v libx264 -preset slow -crf 20 -c:a libvo_aacenc -b:a 128k "%%~na.avi" 
#Then to delete original files 
for /F "delims=;" %%F in (listing.txt) do del %%F 
del listing.txt 

내가 가진 첫 번째 문제는 내가 모든 일반적인 비디오 형식으로 목록을 채울 수 있도록하고 싶습니다이다. cmd가 perl 문자열 매칭과 비슷한 구문을 가지고 있다고 상상하고 있습니다. A(B|C)은 AB와 AC가 일치 할 것이며 모든 비디오 파일 확장자와 짝을 지을 수 있습니다. (요점을 설명하기 위해 위의 코드에서 작성했지만 작동하지 않는다는 것을 알고 있습니다).

나는 시도하고있는 것을 설명하기에 충분하다고 생각합니다.

+0

H.264 비디오에서 일반적으로 사용되는 MP4와 같은 최신 컨테이너 형식이 아닌 이유는 무엇입니까? 또한, 원시 FFmpeg AAC 인코더 ('-c : a aac -strict experimental')는'libvo_aacenc'보다 128k에서 더 좋게 들립니다. – LordNeckbeard

+0

순수하게 이러한 파일을 다른 장치 (즉, X360)로 스트리밍하고 mp4의 모든 인코딩 변형을 재생하지는 않지만 적어도 과거의 경험에서 볼 때 avi는 수행합니다. –

답변

0

DIR * .ext1 * .ext2

전체 경로를 지정하고 이름에 공백을 기대하는 경우 따옴표를 사용하지만 더 나은

.

Dir "%userprofile%\documents\*.avi" "%userprofile%\documents\*.mp4" /a /s /b 

Forforfiles 명령보다 쉽습니다. 그러나 여러 파일 형식에는 적합하지 않습니다. 명령을 입력하면

또한 배치 파일 % A의 한 줄

@for /f "usebackq delims=" %A in (`dir "%Userprofile%\documents\*.avi" "%Userprofile%\documents\*.mp4" /a /s /b`) do @echo %A 

사용 %% 될 수 있습니다.

+0

당신보다 낫습니다. 나는 꽤 많이 성취했습니다. '%% F가이 시간에 예상치 못했다 '라는 오류가 왜 발생하는지 알고 싶습니까? –

+0

나는 %% A를 사용하고 %% F를 사용하기 때문에. 모든 %% F가 %% A인지 또는 그 반대인지 확인하십시오. –

+0

네, 마지막 포인트를 얻었습니다. 나는 프롬프트에 직접 입력하여 테스트했으며 이중 %에 대해 불평하고있었습니다. –

관련 문제