さて、私がやっていることの簡単な説明: 私は Windows Media Center (Windows 7) を使用して毎晩 Jeopardy を録画しています。次に、Handbrake を使用して .wtv ファイルを .mkv ファイルに変換し、NAS に転送して、後で Plex Media Server/Center を使用して視聴できるようにします。これを「手動で」行うのではなく、スケジュールされたタスクとしてバッチ ファイルを使用してプロセスを自動化しようとしています。最初に、スクリプトをセットアップして、右クリック > 送信 > convert.bat を実行すると、Handbrake のコマンドライン インターフェイスが開始され、ファイルが変換され、出力が NAS に移動され、元のファイルが削除されました。 (うまくいきました)。
今、私がやっていることは、スケジュールされたタスクとしてバッチスクリプトを開始し、「録画したテレビ」ディレクトリの内容をループし、.wtv ファイルをループしてそれらを変換/移動/削除することです。
問題は、Windows Media Center が Jeopardy ファイルに「!」を含む名前を正しく付けていることにあります。それらの中で (例: Jeopardy!_KHQ_2012_12_04_21_12_12.wtv)、私のスクリプトを完全にブリックします。「送信先」バッチ ファイルはうまく機能しましたが、ディレクトリ内の *.wtv ファイルをループすると、すべてのファイル名が「!」で返されます。つまり、私は彼らとしゃがむことができません。「!」のないファイル 滞りなく処理を行います。
正しい方向に私を向けることができる人に前もって感謝します! (そして、このスクリプトを改善できる他の領域が見つかった場合は、それも問題ありません...)
私が使用しようとしている基本的なコードは次のとおりです。
@echo off
setlocal ENABLEDELAYEDEXPANSION
SET count=0
SET getFolder=C:\Users\Public\Recorded TV\
SET ripFolder=C:\Rips\
SET putFolder=Z:\Videos\Recorded TV\
FOR %%F IN ("%getFolder%*.wtv") DO (
SET /A count=!count!+1
REM DETERMINE OUTPUT FILENAME
for /f "tokens=5,6,7,8,9,10 delims=\_" %%a in ("%%F") do (
set show=%%a
set station=%%b
set year=%%c
set month=%%d
set day=%%e
set hour=%%f
REM GENERATE OUTPUT NAMING CONVENTION
set output=!show! s!year!e!month!!day! !hour!
)
REM PROCESS WITH HANDBRAKE CLI
"C:\Program Files\Handbrake\HandBrakeCLI.exe" -i "%%F" -t 1 -c 1 -o %ripFolder%!OUTPUT!.mkv -f mkv --deinterlace="fast" --crop 58:60:2:2 --strict-anamorphic -e x264 -q 20 --vfr -a 1 -E faac -B 160 -6 dpl2 -R Auto -D 0 --gain=0 --audio-copy-mask none --audio-fallback ffac3 -x ref=1:weightp=1:subq=2:rc-lookahead=10:trellis=0:8x8dct=0 --verbose=1
REM MOVE CONVERTED FILE TO NAS
copy "%ripFolder%!OUTPUT!.mkv" "%putFolder%"
REM DELETE ORIGINAL
del "%%F"
REM DELETE LOCAL RIP
del "%ripFolder%!output!.mkv"
)
echo %count% files processed
pause
ENDLOCAL