PowerShellで字幕のsubファイルをsrt形式に変換するスクリプト

powershell コンピュータ
powershell

ゆっくりMovieMaker4βで出力される字幕ファイル(拡張子sub)をhandbrakeでインポートできる字幕ファイル(拡張子srt)に変換するスクリプトを作成しました。

$inFile = "D:\work\taiiku\taiiku.sub"
$outFile = "D:\work\taiiku\taiiku.srt"

$reader = New-Object System.IO.StreamReader($inFile, [System.Text.Encoding]::GetEncoding("utf-8"))
$writer = New-Object System.IO.StreamWriter($outFile, $false, [System.Text.Encoding]::GetEncoding("utf-8"))

$i = 0

while (($line = $reader.ReadLine()) -ne $null)
{
    if ($line -match '(\d\d:\d\d:\d\d)\.?(\d*),(\d\d:\d\d:\d\d)\.?(\d*)')
    {
        $i++
        $writer.WriteLine($i)

        $str = "{0},{1:000} --> {2},{3:000}" -f $Matches[1], ([int]$Matches[2]/10000), $Matches[3], ([int]$Matches[4]/10000)

        $writer.WriteLine($str)
    }
    else
    {
        $writer.WriteLine($line)
    }
}
$reader.Close()
$writer.Close()

# 終了
Write-Host("終了")

手元にある字幕ファイルがhandbreakで字幕として使えるように正規表現で加工しただけですので汎用性があるかは大分怪しいです。

コメント