1

Тема: VBScript: получение формата дата-время для имени файла

Достаточно часто требуется создавать файлы (например, log-файлы) с указанием непосредственно в имени текущих даты-времени. Крайне желательно при этом, чтобы созданные файлы были правильно отсортированы (т.е., использовали т.н. «японский» порядок даты — Год-Месяц-День, не забывая про ведущие нули в одноцифровых месяцах и датах). Для этого можно использовать непосредственную работу с функциями даты и времени. Но существует и более простой способ: свойство «.LocalDateTime» класса «Win32_OperatingSystem» возвращает дату-время в формате CIM_DATETIME, которую достаточно просто обрезать, например:

Option Explicit

Dim objSWbemServicesEx
Dim collSWbemObjectSet
Dim objSWbemObjectEx

Dim strDateTime


Set objSWbemServicesEx = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set collSWbemObjectSet = objSWbemServicesEx.ExecQuery("SELECT LocalDateTime FROM Win32_OperatingSystem")

For Each objSWbemObjectEx In collSWbemObjectSet
    strDateTime = Left(objSWbemObjectEx.LocalDateTime, 8 + 6)
    
    Exit For
Next

WScript.Echo strDateTime

Set objSWbemObjectEx   = Nothing
Set collSWbemObjectSet = Nothing
Set objSWbemServicesEx = Nothing

WScript.Quit 0
20101021063810

Из плюсов — полная независимость от региональных настроек и версий ОС: формат CIM_DATETIME един.

Автор идеи — amel27.

Источник