HandBrakeCLIで変換スクリプト(PowerShell)

isoファイルとかtsファイルとか、
たまったものをメディアサーバーにそのまま置いておくのもかさばるので、残しておくなら極力x264やらエンコードしておいときたい。
ということで、
ICT備忘録さんで掲載されていたコードを参考にさせてもらってスクリプトにしてみた。
海外ドラマみたいに2話入っているものはこうしないと1話分しか対象とならない事があるからとりあえず2回ループさせてる。
大分適当な対応。(汗
Param(
[switch]$shutdown
)
#Configure
#----------------------------
$HandBrakeEXE = "C:\Program Files\HandBrake\HandBrakeCLI.exe" #HandBrakeのpath
$InputFilePATH = "F:\Titles\" #変換する対象ファイルを配置するディレクトリ
$FileTo = "F:\TitlesTo" #変換済みのファイルを移すディレクトリ
#指定したフォルダを再帰的に処理するので、フォルダでグルーピングして
#渡せば、そのまま変換済みファイルができあがる。
#ただし、処理済みはまとまってしまうので、複写して渡した方が良いかもしれない。
#----------------------------
Function Enc{
#再帰的処理が不要の場合、-Recurseを削除のこと。
$filelist = Get-ChildItem $InputFilePATH -Recurse -filter *.iso
$num = $filelist | measure
$filecount = $num.count
$i = 0;
ForEach ($file in $filelist)
{
$i++;
$oldfile = $file.DirectoryName + "\" + $file.BaseName + $file.Extension;
$progress = ($i / $filecount) * 100
$progress = [Math]::Round($progress,2)
Clear-Host
Write-Host -------------------------------------------------------------------------------
Write-Host Handbrake Batch Encoding
Write-Host "Processing - $oldfile"
Write-Host "File $i of $filecount - $progress%"
Write-Host -------------------------------------------------------------------------------
for ($title=1; $title -le 2; $title++) {
$newfile = $file.DirectoryName + "\" + $file.BaseName + "-title" + $title + ".mkv";
#x265エンコード設定 DVDISO to mkv
#Start-Process -FilePath $HandBrakeEXE -ArgumentList "-i `"$oldfile`" --title $title -o `"$newfile`" -f mkv -w 720 --crop 0:0:0:0 --loose-anamorphic --modulus 2 -e x265 -q 20 --cfr -a 1 -E av_aac -6 dpl2 -R Auto -B 160 -D 0 --gain 0 --audio-fallback ac3 --subtitle 1 --subtitle-burned=1 --markers --encoder-preset=veryfast --verbose=1" -Wait -NoNewWindow
#x264エンコード設定 DVDISO to mkv
Start-Process -FilePath $HandBrakeEXE -ArgumentList "-i `"$oldfile`" --title $title -o `"$newfile`" -f mkv -w 720 --crop 0:0:0:0 --loose-anamorphic --modulus 2 -e x264 -q 20 --cfr -a 1 -E av_aac -6 dpl2 -R Auto -B 160 -D 0 --gain 0 --audio-fallback ac3 --subtitle 1 --subtitle-burned=1 --markers --x264-preset=veryfast --x264-profile=main --h264-level=4.0 --verbose=1" -Wait -NoNewWindow
}
Move-Item $oldfile $FileTo
}
}
#Main
Enc
if($shutdown){Start-Process "shutdown.exe" -ArgumentList (" /s /t 30") -NoNewWindow -Wait}
DVDISOをmkvにする想定なので、
dvd2mkv.ps1なんてファイル名でpathを通しておくのが良いかな。