2016-12-05 14 views
0

먼저,이 문제를 해결하는 방법을 봤습니다. 행운을 빕니다. 나는 fcmpeg를 사용하는 ac-3 또는 ogg 인 경우 파일에 오디오를 다시 인코딩하도록 배치 파일을 만드는 중입니다. 나는 오디오가 특정 코덱과 일치하는 경우에만 어떻게 자동화하는지 ffmpeg로 변환하는 방법을 알고 있습니다. 파일에 대한 오디오 코덱을 얻으려면 ffprobe와 MediaInfo의 두 가지 방법이 있습니다. 명령 출력을 일괄 적으로 변수로 설정하는 방법

ffprobe -v error -select_streams a:0 -show_entries stream=codec_name -of default=noprint_wrappers=1:nokey=1 "input.mkv" 

MediaInfo --Inform="Audio;%%Format%%" "input.mkv" 

또는

는하지만, 내 문제는 명령 출력에서 ​​변수를 설정하여입니다. 이 코드는 제가 시도한 코드입니다.

분명히 이것은 내 목표의 한 부분 일 뿐이지 만 이것은 지나갈 수없는 부분입니다. "DEL codec.txt"부분을 제거하여 실제로 텍스트 파일에 올바른 출력을 저장했는지 확인했지만 변수로 가져 오지 않았습니다. 어쨌든 변수를 출력하도록 설정할 수 있습니다. 이것은 검색에서 자주 발견되는 방식입니다.

도움을 주시면 감사하겠습니다.

+2

루프 집합 환경 변수에 대한 [windows 배치 명령]의 가능한 복제본 (http://stackoverflow.com/questions/17598638/windows-batch-command-for-loop-set-environment-variable) –

+0

가능한 복제본 [ 배치 - 명령 출력을 변수에 할당] (http://stackoverflow.com/questions/16203629/batch-assign-command-output-to-variable); 또한 관련 : [일괄 - 변수에 변수와 명령 출력 할당] (http://stackoverflow.com/questions/28663803/batch-assign-command-output-with-variables-to-variable) – aschipfl

답변

1
for %%a in (*.mp4) do (
for /f "delims=" %%c in (
    'MediaInfo --Inform="Audio;%%Format%%" "%%a" ') do (

    echo codec is %%c 
    rem now use "%%c" as codec 
) 
rem "%%c" is now out-of-scope 
) 

당신은 codec 코드에서 변화가 없었다 이유에 대한 설명은 delayed expansion에 대한 SO 검색해야 할 것입니다.

+0

고마워,이 일을 약간 수정 해 명령의 일부로 전달하지 않았으므로 등호 앞에 캐럿을 추가해야했습니다. – Crankrune