Time.vbsにバグがありました
Time.vbsは録音時間計算のスプリクトです。バッチファイルで時間計算は大変なのでWSHで処理します。
しかし終了時間0時近辺の録音が停止しないバグがあったので調べました。
以前の Time.vbs
' CScript Time.vbs /r:0:01:00 ' CScript Time.vbs /d:2016/12/14 /t:00:01:00 Option Explicit Dim argRecTime Dim value dim gRecTime dim argDay dim argTime Dim aNamed Set aNamed = WScript.Arguments.Named argRecTime = WScript.Arguments.Named.Item("r") argDay = WScript.Arguments. Named.Item("d") argTime = WScript.Arguments. Named.Item("t") if not (argRecTime = "") Then '引数で指定の録音時間を日時属性に変換 gRecTime = TimeValue(argRecTime) '録音終了日時を求める Dim gEndDate gEndDate = Now() + gRecTime WScript.Echo gEndDate End If if not (argTime = "") Then '引数で指定の録音時間を日時属性に変換 argRecTime = TimeValue(argTime) argDay = DateValue(argDay) argRecTime = argDay + argRecTime '録音秒数をrtmpdumpの引数形式(秒数)にする gRecTime = argRecTime - Now() if (gRecTime > 0) Then gRecTime = Hour(gRecTime) * 60 * 60 + Minute(gRecTime) * 60 + Second(gRecTime) + 20 '20秒ほどマージンを設けることで録音終了時の誤差でリトライにいってしまうことを防止する。 Else gRecTime ="EXIT" End If WScript.Echo gRecTime End If
このスプリクトだと録音終了日時が0:00:00だと省略されて日付のみ返す事がわかりました。秒に直すと文字列を返さないため永遠に録音されます。
新しい Time.vbs
' CScript Time.vbs /r:0:01:00 ' CScript Time.vbs /d:2016/12/14 /t:18:47:44 Option Explicit Dim argRecTime Dim value dim gRecTime dim argDay dim argTime Dim aNamed Set aNamed = WScript.Arguments.Named argRecTime = WScript.Arguments.Named.Item("r") argDay = WScript.Arguments. Named.Item("d") argTime = WScript.Arguments. Named.Item("t") if not (argRecTime = "") Then '引数で指定の録音時間を日時属性に変換 gRecTime = TimeValue(argRecTime) '録音終了日時を求める Dim gEndDate gEndDate = Now() + gRecTime WScript.Echo gEndDate End If if not (argDay = "") Then '引数で指定の録音時間を日時属性に変換 argDay = DateValue(argDay) if (argTime = "") Then argRecTime = argDay Else argRecTime = TimeValue(argTime) argRecTime = argDay + argRecTime End If '録音秒数をrtmpdumpの引数形式(秒数)にする gRecTime = argRecTime - Now() if (gRecTime > 0) Then gRecTime = Hour(gRecTime) * 60 * 60 + Minute(gRecTime) * 60 + Second(gRecTime) + 20 '20秒ほどマージンを設けることで録音終了時の誤差でリトライにいってしまうことを防止する。 Else gRecTime ="EXIT" End If WScript.Echo gRecTime End If
そこで0:00:00で空欄の場合、秒計算で時間の引数を計算しないようにしました