1

Тема: VBS:Минуты форматируются как часы. Как это исправить?

на основе скрипта из темы VBScript: воспроизведение аудио решил сделать скрипт подсчитывающий продолжительность всей музыки в папке:

'посчитываем общую длину музыки в папке
input = "D:\Музыка\"            'папка input
i=0

Set WMPlayer = New WMPlayerClass
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set WSHShell = WScript.CreateObject("WScript.Shell")

RecursiveFolderScan input

'Создаём процедуру рекурсивного обхода каталога
Sub RecursiveFolderScan(FolderPath)
    'Получаем объектную модель текущего каталога
    Set Folder = objFSO.GetFolder(FolderPath)
 
    'Перебираем все файлы в текущем каталоге
    For Each File in Folder.Files

'/// Открываем ресурс
WMPlayer.OpenMedia File

i=i+CDate(WMPlayer.CurrentMedia.DurationString)        'счетчик продолжительности
    Next
 
    'Перебираем все подкаталоги в каталоге
    For Each SubFolder in Folder.SubFolders
        RecursiveFolderScan(SubFolder.Path)
    Next
Set WSHShell = Nothing

End Sub

MsgBox "Общая продолжительность: "&i,vbInformation,"WMPlayerClass"




'/// Класс проигрывателя
Class WMPlayerClass
    '/// Переменная для хранения ссылки на объект плеера
    Dim WMPlayer
    Private Sub Class_Initialize()
        Set WMPlayer = CreateObject("WMPlayer.OCX")
        WMPlayer.settings.autoStart = False
        WMPlayer.settings.enableErrorDialogs = False
    End Sub

    '/// Свойство возвращает ссылку на объект настроек плеера
    Public Property Get Settings
        Set Settings = WMPlayer.Settings
    End Property

    '/// Метод подключения к ресурсу
    Function OpenMedia(URL)
        '/// Несколько из констант состояния открытия
        Const wmposMediaLoading = 11
        Const wmposMediaLocating = 9
        Const wmposPlaylistOpenNoMedia = 6
        Const wmposMediaOpen = 13
        Const wmposPlaylistOpening = 5
        Const wmposOpeningUnknownURL = 21
        Const wmposUndefined = 0

        '/// Для корректного получения данных о содержимом, нужно открыть ресурс.
        WMPlayer.URL = URL
        '/// Убираем звук        
        WMPlayer.settings.mute=true
        '/// Запускаем на проигрывание
        WMPlayer.controls.Play
        '/// Ждём состояния открытия файла. Если файл открыть не удалось вернётся wmposPlaylistOpenNoMedia
        Do
            WScript.Sleep 10
        Loop Until WMPlayer.OpenState = wmposMediaOpen or WMPlayer.OpenState=wmposPlaylistOpenNoMedia
        '/// Останавливаем проигрывание
        WMPlayer.controls.Stop
        '/// Возвращаем звук
        WMPlayer.settings.mute=false
    End Function

    '/// Свойство возвращает ссылку на параметры открытого файла
    Public Property Get CurrentMedia
        Set CurrentMedia = WMPlayer.CurrentMedia
    End Property

    '/// Метод запуска проигрывания
    Function Play()
        WMPlayer.Controls.Play
        '/// Ожидаем окончания проигрывания (ждём пока плеер не перейдёт в состояние остановки)
        Do
            WScript.Sleep 100
        Loop Until WMPlayer.playState = 1
    End Function
End Class

все считает, но минуты форматируются как часы, в итоге 24 мин 26 сек выводятся как 31.12.1899 0:26:00
Как это исправить?
Как прочитать продолжительность и другие видео-аудио-параметры видеофайла(хотя бы avi)?