2017-03-22 11 views
0

배치 파일을 사용하여 다른 TV 시리즈의 메타 데이터 및 트랙을 편집 해 왔으며 지금까지 계속 진행 중입니다. 그러나 현재 내가하고있는 시리즈에는 모든 에피소드마다 느낌표가 있습니다.MKVMerge 및 배치 파일

이 파일 형식은 항상이 형식으로 될 것 같습니다 S00E00 - 에피소드 이름 여기

것은 내가 대부분의 쇼에 사용했던 템플릿입니다.

setlocal enabledelayedexpansion 
set mkvmerge="C:/Program Files/MKVToolNix\mkvmerge.exe" 
set output_folder="C:\Games-And-Stuff\#Anime\zAnime\_Muxing\[[EPISODE_NAME]]" 
for /r %%a in (*.mkv) do (
    set ep=%%~na 
    set ep_name=!ep:~9! 
    set ep_num=!ep:~4,2! 
    call %mkvmerge% -o "%output_folder%\%%~na.mkv" --track-name ^"0:!ep_name!^" --track-name ^"1:[ENG] AAC 5.1^" --track-name ^"2:[JAP] AAC 2.0^" --track-name ^"3:[ENG] Signs and Songs^" --track-name ^"4:[ENG]^" --language 0:und --language 1:eng --language 2:jpn --language 3:eng --language 4:eng --default-track 0:yes --default-track 1:yes --default-track 2:no --default-track 3:yes --default-track 4:no --forced-track 3:yes "%%a" --track-order 0:0,0:1,0:2,0:3,0:4 --title ^"? - Episode !ep_num! - !ep_name!^" 
) 

느낌표가있는 경우 call %mkvmerge%에 변수를 사용할 때 생기는 문제가 있습니다. 이 문제를 해결할 여지가 있습니까? 서브 루틴을 사용하는 경우

delayedexpansion

답변

1
setlocal DISabledelayedexpansion 
set "mkvmerge=C:\Program Files\MKVToolNix\mkvmerge.exe" 
set "output_folder=C:\Games-And-Stuff\#Anime\zAnime\_Muxing\[[EPISODE_NAME]]" 
for /r %%a in (*.mkv) do (
    set ep=%%~na 
    call :merge 
) 
goto :eof 

:merge 
set ep_name=%ep:~9% 
set ep_num=%ep:~4,2% 
call "%mkvmerge%" -o "%output_folder%\%ep%.mkv" --track-name "0:%ep_name%" --track-name "1:[ENG] AAC 5.1" --track-name "2:[JAP] AAC 2.0" --track-name "3:[ENG] Signs and Songs" --track-name "4:[ENG]" --language 0:und --language 1:eng --language 2:jpn --language 3:eng --language 4:eng --default-track 0:yes --default-track 1:yes --default-track 2:no --default-track 3:yes --default-track 4:no --forced-track 3:yes "%ep%" --track-order 0:0,0:1,0:2,0:3,0:4 --title "? - Episode %ep_num% - %ep_name%" 
goto :eof 

(예 부족에 대한 검증되지 않은)을 피할 수 있습니다. SET "var=value" (값이 비어있을 수 있음)은 할당 된 값에 찌그러진 후미 공백이 포함되지 않도록하기 위해 사용됩니다. set /a은 "quoteless"로 안전하게 사용할 수 있습니다.

+0

감사합니다. 이것은 내가 필요한 빌딩 블록을 주었다. 나는 이것을 가지고 몇 가지를 바꿔야 만했다. mkvmerge 변수를'set mkvmerge = "C :/Program Files/MKVToolNix \ mkvmerge.exe"'로 변경해야했습니다. 나는'% ep %'를 대체하기 위해'call % mkvmerge %'에서 사용되는 파일 경로를위한 새로운 변수를 만들어야 만했다. 또한'--track-name "0 : % ep_name! %"'에 여분의 느낌표가 있습니다. – CrunchyHotDogs

+0

OK - 여분의 느낌표를 제거하고,'mkvmerge' 경로명에서 잘못된 슬래시를 수정하고 서브 루틴의'call'에 필요한 따옴표를 추가했습니다. 나는 'twas가 테스트되지 않았다.' – Magoo