2017-03-22 22 views
0

バッチファイルを使用して、さまざまなテレビシリーズのメタデータとトラックを編集しています。しかし、私が現在行っているシリーズには、すべてのエピソードで感嘆符があります。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%に変数を使用していると私の問題が発生しています。これを回避する方法はありますか?あなたがサブルーチンを使用する場合

答えて

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 

(例の欠如のためにテストされていない)

delayedexpansionを回避することができます。 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 untested'と言った – Magoo

関連する問題