各ファイルごとにカスタム AVIsynth スクリプトを生成するバッチ ファイルを作成しようとしています。現在、バッチ ファイルは、ビデオ ファイルが存在するフォルダー内から実行するように設定されています。私がする必要があるのは、ファイルの作成時刻を取得して、タイムコードのバーンインを生成することです。必要な情報を取得するのに問題はありません。ただし、ファイルが午後に作成された場合は、24 時間である必要があります。たとえば、午後 2 時は 14 と表示する必要があります。
newth
必要に応じて 12 を追加する変数を作成する if ステートメントが機能しています。ただし、それが必要ない場合、変数は存続します。ループの後続の各反復では、変数は変更されません。
私の例。最初のファイルは午後 2 時に作成され、もう 1 つは午後 12 時に作成された 2 つのファイルがあります。2pm ファイルが最初に読み込まれ、newth
変数は 14 になります。次のファイルでは、newth
変数は 12 になるはずですが、代わりに 14 のままです。これを修正するにはどうすればよいですか?
@Echo Off & CLS
SetLocal EnableDelayedExpansion
For /F %%a In ('dir *.mpg /b') Do (
ECHO Processing "%%a"
echo %%~ta
set time=%%~ta
set th=!time:~11,2!
set tm=!time:~14,2!
set era=!time:~17,2!
echo !era!
if "!era!"=="PM" (
if !th! LSS 12 ( set /a newth=!th!+12 )
) else ( set /a newth=!th!)
echo !newth!
echo //AviSynth Test Script >scripts/%%a.avs
echo DirectshowSource^("%%~fa"^)>>scripts/%%a.avs
echo LanczosResize^(720,400^) >>scripts/%%a.avs
echo ShowSMPTE^(^) >>scripts/%%a.avs
ECHO Back to Console
Pause
)
echo
デバッグに使っていたので少し面倒です。しかし、うまくいけば、問題は明確です。