Aviutlのエンコード進捗率確認用スクリプト

出力イメージは、エンコード状況を参照。

エラー処理とかちゃんと書かないといけないよなぁ、と思いつつ、既に飽きていたりする。
しかも、バッチ登録後に順番を変えると追随しないという本当に適当な実装。

スクリプトはPowerShellで動かす。

#---------------------------------------------------------
#---- エンコード進捗率をそれっぽく吐き出すスクリプト
#---------------------------------------------------------

#---------------------------------------------------------
#---- $AviutlPath : Aviutlのパス
#---- $OutputMovie: ファイルの出力先パス
#---- $Filetype   : 出力ファイルの拡張子
#---- $Machine    : エンコード中のマシン名
#---------------------------------------------------------
$AviutlPath  = "C:\movie\aviutl"
$OutputMovie = "V:\anime"
$Filetype    = "mp4"
$OutputLog   = "Z:\data\txt\encoding.txt"
$Machine     = "KIYOKA"

#---------------------------------------------------------
#---- 日付とAviutlのエンコード残り時間取得(window名の取得)
#---------------------------------------------------------
$Date = Get-Date
$Run  = get-process | % {if ($_.mainwindowhandle -ne 0) {$_.mainwindowtitle}} | ?{$_ -like "*%*"}

#---------------------------------------------------------
#---- Dokuwiki用のフォーマットで記載する
#---------------------------------------------------------
Set-Content $OutputLog "====== エンコード状況 ======" -encoding UTF8
Add-Content $OutputLog "" -encoding UTF8
Add-Content $OutputLog "** $Date 取得(取得時間が古い場合、たぶん $Machine はお休み中です) **" -encoding UTF8
Add-Content $OutputLog "" -encoding UTF8

if(! $Run.IndexOf("%")){
        Add-Content $OutputLog "  * 現在、エンコード中のタスクはありません。" -encoding UTF8
}

#---------------------------------------------------------
#---- Aviutlで使っているbatchファイルの一覧取得
#---------------------------------------------------------
$AviutlBatch = @(Join-path $AviutlPath batch* -Resolve)

#---------------------------------------------------------
#---- バッチの名前の順で一覧を取得してるから、最初だけ出力中の%を出して、後は保留。
#---- 並び替えたときの動作までちゃんと見てない。
#---------------------------------------------------------
for( $count=0 ; $count -lt $AviutlBatch.Length; $count++){
    $Encoding = Get-Content -Path $AviutlBatch[$count] -TotalCount 1
    $Index1 = $Encoding.IndexOf($OutputMovie)
    $Index2 = $Encoding.IndexOf($Filetype) + $Filetype.Length
    $Encoding = Split-Path $Encoding.SubString($Index1,$Index2 - $Index1) -leaf
    if($count -eq 0){
#        Write-Host "$count : $Encoding : $Run"
        Add-Content $OutputLog "$Machine が頑張ってエンコードしてくれてます。" -encoding UTF8
        Add-Content $OutputLog "^  エンコード順序  |  エンコ対象  |  進捗率  |" -encoding UTF8
        Add-Content $OutputLog "^  $count  | $Encoding | $Run |" -encoding UTF8
    }else{
#        Write-Host "$count : $Encoding : エンコ待ち"
        Add-Content $OutputLog "^ $count | $Encoding | エンコ待ち |" -encoding UTF8
    }
}

Add-Content $OutputLog "" -encoding UTF8
home/rec/encode-checker-ps1-01.txt · 最終更新: 2011/08/24 10:07 (外部編集)
CC Attribution-Noncommercial-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0