AutoHotKey_Lで、AviUtlのバッチ登録を自動化した。

 AviUtlで複数ファイルをエンコードする場合「バッチ登録」を使うのだけど、手作業で出力ファイル名入力するのが面倒すぎたので自動化した。

 変換したい動画のパスリスト(\n区切り)をクリップボードに入れて、AviUtlメインウィンドウでF12打鍵すれば登録開始。
 出力ファイルは"元ファイル名.設定した拡張子"で、重複してれば接尾辞"_[n]"で回避。
 使用前に"OutputPluginNum"と"SaveFileExt"を設定すべし。

;--------------------------------------------------------------------------------------
; AviUtl
;--------------------------------------------------------------------------------------
#IfWinActive ahk_class AviUtl ahk_exe Aviutl.exe

F12::  ; クリップボードのパスをバッチ登録
  
  OutputPluginNum := 1  ; "プラグイン出力"で選択するプラグインの番号。1番上は1。
  SaveFileExt := "mp4"  ; 出力ファイルの拡張子。
  
  
  
  PathList := Clipboard
  
  WinGet, WHwnd, ID
  WinGet, ExePath, ProcessPath
  SplitPath, ExePath, , ExeDir
  IfExist, %ExeDir%\batch*.aup
  {
    MsgBox, 262691, , バッチ登録されたプロジェクトが存在します`n既存のプロジェクトを削除しますか?
    IfMsgBox, Cancel
      return
    IfMsgBox, Yes
      FileRecycle, %ExeDir%\batch*.aup
  }
  
  StringReplace, PathList, PathList, `n, `n, UseErrorLevel
  MaxNum := ErrorLevel
  
  Loop, Parse, PathList, `n, `"
  {
    TipView(A_Index "/" MaxNum)
    
    FilePath := A_LoopField
    IfNotExist, %FilePath%
      continue
    
    SplitPath, FilePath, , FileDir, , FileNoExt
    
    SaveFilePath := FileDir "\" FileNoExt "." SaveFileExt
    while FileExist(SaveFilePath)
      SaveFilePath := FileDir "\" FileNoExt "_[" A_Index "]." SaveFileExt
    
    WinMenuSelectItem, ahk_id %WHwnd%, , ファイル, 1&  ; "開く"
    WinWait, ファイルを開く ahk_class #32770 ahk_exe Aviutl.exe
    ControlSetText, Edit1, %FilePath%  ; "ファイル名"
    Sleep, 100
    ControlClick, Button2, , , L, 2  ; "開く"
    WinWaitClose
    
    WinMenuSelectItem, ahk_id %WHwnd%, , ファイル, プラグイン出力, %OutputPluginNum%&
    WinWait, ahk_class #32770 ahk_exe Aviutl.exe
    ControlSetText, Edit1, %SaveFilePath%  ; "ファイル名"
    Sleep, 100
    ControlClick, Button5, , , L, 2  ; "バッチ登録"
    WinWaitClose
  }
  
  TipView("FIN")
return


;--------------------------------------------------------------------------------------
; TipView.ahk
;--------------------------------------------------------------------------------------

TipView(TextBuf = "", Timer = 3000, X = "", Y = "", SW = 0) {
  if SW
    CoordMode, ToolTip

  ToolTip, %TextBuf%, X, Y
  if !Timer
    Timer := "Off"
  SetTimer, TipClose, %Timer%
}

TipClose:
  SetTimer, TipClose, Off
  ToolTip
return


[PR]
by LordNoesis | 2017-05-17 18:29 | テクノロジ | Trackback | Comments(0)
ブログトップ | ファンになる