TsRenameでのリネーム後のファイル名でバッチ処理をしてみる

TsRenameというTSファイルのEPGを読み取ってファイル名を変更してくれる便利なツールがありますが、
バッチ処理をするときはリネーム後のファイル名がわからないということがあったりします。

リネームした後のファイルをバッチ処理する方法をなんとなく考えてみました。
あまり意味ないけどw

[ダウンロード]

GetFile_ID.exe

ファイルのディスク上での一意のID(数値)を表示するツールです。
このツールでIDを表示するとリネームしても同じIDが表示されます。
同じディスク内でmoveしたときはNTFSだと同じIDを維持しますがFATだと変化します。

TsRename2.bat

GetFile_ID.exeを使ったバッチファイルです。
複数ファイルをまとめてドラッグすれば順次処理します。
バッチ処理の最後にやりたい処理を追記、またはcallで呼び出して環境変数の設定をさせて使います。

@echo off
rem 複数ファイル対応
:loop
if /I "%~x1" == ".ts" call :func "%~1"
shift
if not "%~1" == "" goto loop
exit /b

rem 元ファイルのIDを取得
:func
set FILE=%~1
set DIR=%~dp1
for /f "usebackq" %%A in (`GetFile_ID.exe "%FILE%"`) do set FILE_ID=%%A

rem TsRenameの実行
TsRename.exe -auto -quit "%FILE%"

rem IDが一致するファイルを検索
for /r "%DIR%" %%B in (*.ts) do (
 for /f "usebackq" %%C in (`GetFile_ID.exe "%%~B"`) do (
  if "%FILE_ID%" == "%%C" set RENAME=%%~B
 )
)

rem =========== ここから下を書き換えて使う ===============
echo リネーム前のファイル名:"%FILE%"
echo リネーム後のファイル名:"%RENAME%"
  • メモ
    for文中で環境変数を一時変数用には使えないようです。
    set文を複数回実行すると最後の値のみが反映されるような。

TsSplitHD_Demux.bat

TsRename2.batを使った使用例。
TsSplitterでHD動画だけを分離してAVSファイルの作成まで行います。
分離後のファイル名は"_HD"を追加しただけの決め打ちで想定していますが。

ここではTsRename2.batをcallで呼び出して環境変数の設定をさせています。

@echo off
:loop
if /I "%~x1" == ".ts" call :func "%~1"
shift
if not "%~1" == "" goto loop
exit /b

:func
call TsRename2.bat "%~1"
call :func2 "%RENAME%"
exit /b

:func2
set FTS=D:\VideoFiles\TS\%~n1_HD
set FTMP=D:\VideoFiles\tmp\%~n1_HD
set FAVS=D:\VideoFiles\avs\%~n1_HD

TsSplitter -EIT -1SEG -SD "%~1" -OUT "D:\VideoFiles\TS"
start "" /min /wait BonTsDemux.exe -start -quit -i "%FTS%.ts"
move /y "%FTS%.m2v" "%FTMP%.m2v"
move /y "%FTS%.wav" "%FTMP%.wav"
DGIndex.exe -SD=" -IF="%FTMP%.m2v" -OF="%FTMP%" -minimize -exit

echo MPEG2Source("%FTMP%.d2v") > "%FAVS%.avs"
echo ConvertToYUY2() >> "%FAVS%.avs"
echo AudioDub(last, WAVSource("%FTMP%.wav")) >> "%FAVS%.avs"
echo return last >> "%FAVS%.avs"

TaskSchedule.bat

指定した時間にまとめて処理したい場合は以下のようなバッチをタスクスケジューラに登録して使うといいかもしれません。
処理したいファイルをINDIRフォルダに移動しておけば処理後はOUTDIRフォルダに移動されます。

@echo off
rem タスクスジェジューラでまとめ処理
set INDIR=D:\IN_TS\
set OUTDIR=D:\OUT_TS\

for /r "%INDIR%" %%A in (*.ts) do call :func "%%~A"
exit /b

:func
call TsSplitHD_Demux.bat "%~1"
move /y "%RENAME%" "%OUTDIR%"





添付ファイル: fileTsRename2_03.lzh 4126件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: Sat, 30 May 2009 23:42:53 JST (5437d)