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で空欄の場合、秒計算で時間の引数を計算しないようにしました


