1 (изменено: JSman, 2019-08-03 01:43:10)

Тема: VBS: Время работы системы

Вот наваял код показывающий время работы компьютера после включения рядом с системными часами:


'SysTime.vbs
dim objWMI, WshShell, colOS, strComputer, bd, bd1, s, m, h, hour, min, str
strComputer="."
Set objWMI=("winmgmts:" & strComputer & "\root\cimv2")
Set colOS=objWMI.InstanceOf("Win32_OperatingSystem")
Set WshShell=CreateObject("WScript.Shell")
 
 
  For each objOS in colOS
    bd=objOS.LastBootUpTime
    bd1=Mid(bd, 1, 4) & "-" Mid(bd, 5, 2) & "-" & Mid(bd, 7, 2) & ":" & Mid(bd, 9, 2) & ":" & Mid(bd, 11, 2) & ":" & Mid(bd,13,2)
    s=abs(date diff("s", bd1,now))
    m= Int(s \60)
    hour=Int(m/60)
    m= m mod 60
    min= CStr(m)
    If Len(min)=1 Then min="0" & min
    hour=CStr(hour)
    str="H:mm:ss-" & hour & ":" & min
    WshShell.RegWrite " HKEY_ CURRENT_USER\Control Panel\International\sTimeFormat", str, "REG_SZ"
  Next

Затем создать в планировщике задачу повторять каждую 1 мин. Действие - путь к скрипту. На Windows 10это работает, на других системах не проверял...

2 (изменено: alexii, 2019-07-30 19:11:55)

Re: VBS: Время работы системы

Mishel, а ничего так, что региональные настройки времени идут псу под хвост?

Mishel пишет:

На Windows 10это работает, на других системах не проверял...

Слава богу, в представленном виде это не работает ни под Windows 10, ни под предыдущими ОС.

3

Re: VBS: Время работы системы

В настройках планировщика выбирайте триггер не "вход в сис тему", а " по расписанию"- ежедневно. Повторять каждую минуту. И всё заработает.

4

Re: VBS: Время работы системы

Да при чём тут триггер, коли в коде куча ошибок.

5 (изменено: Rumata, 2019-08-01 18:26:25)

Re: VBS: Время работы системы

Mishel пишет:

код показывающий время работы компьютера после включения

Мне не нравится, что некий скрипт, который должен только что-то показывать еще и пишет - в реестр:

Mishel пишет:

WshShell.RegWrite " HKEY_ CURRENT_USER\Control Panel\International\sTimeFormat"

Не стал вдаваться в подробности что именно он пишет (или подразумевается, что пишет). Логично что, время работы разумно писать в количествах дней, часов, минут, секунд. Более крупные деления на месяцы и года сомнительны, так как эти интервалы не фиксированные.

update 1:

Можно скриптом поиграться с выводом команд:


wmic OS get LastBootUpTime, LocalDateTime /value
wmic path Win32_LocalTime get /value

update 2:

https://stackoverflow.com/a/11128674/3627676

Здесь показано, как перевести веремя из формата YYYYMMDDhhmmss.SSSSSS+zzz в unix timestamp.

( 2 * b ) || ! ( 2 * b )

6 (изменено: Mishel, 2019-08-02 13:25:19)

Re: VBS: Время работы системы

alexii,
А почему тогда у меня на "десятке" этот код работает?
У нас разные версии ОС?

Логично что, время работы разумно писать в количествах дней, часов, минут, секунд.

Для меня логичнее показывать время от начала текущего сеанса.

Rumata,
Спасибо ссылочку

7 (изменено: alexii, 2019-08-02 20:10:26)

Re: VBS: Время работы системы

Mishel пишет:

А почему тогда у меня на "десятке" этот код работает?

1. В коде нет ничего специфичного для Windows 10.
2. Я не верю в сказки. Повторяю, этот код не будет работать ни в одной ОС — в нём куча ошибок. Например, уже здесь:

Set objWMI=("winmgmts:" & strComputer & "\root\cimv2")
Set colOS=objWMI.InstanceOf("Win32_OperatingSystem")

три ошибки: при создании класса WbemServicesEx Вы забыли написать имя функции GetObject(); в самой функции после префикса winmgmts: пропущен разделитель \\; и, наконец, у класса WbemServicesEx не существует метода .InstanceOf() — есть метод .InstancesOf().

И это только начало.

Rumata пишет:

Не стал вдаваться в подробности

А напрасно — подробности вельми антиресные. Например, вот так выглядит формат «GeneralTime» Excel в нормальном представлении:

+ открыть спойлер

https://i.imgur.com/NCEY5X6.png

А вот так:

+ открыть спойлер

https://i.imgur.com/CJMoetF.png

при влезании шаловливых скриптовых ручек в значение sTimeFormat реестра. И так будет с любыми приложениями, обращающимися к региональным настройкам пользователя .

8

Re: VBS: Время работы системы

alexii пишет:

А напрасно

Коллега, а разве wmic OS не является ркгионально (или чего-то там) независимой. Спрашиваю не сарказма ради.

Лично я страюсь подстроить систему под себя, но минимизирую манипуляции с реестром. Конктретно о дате/времени: мне нравятся форматы YYYY-mm-dd HH24:MM. Устанавливаю сие через стандартные гуёвые средства.

( 2 * b ) || ! ( 2 * b )

9 (изменено: alexii, 2019-08-03 20:48:01)

Re: VBS: Время работы системы

Rumata, я не про wmic.exe, и не про Wbem. Я про то, что, ради сомнительной затеи, втюхивание совершенно «левых» и непредусмотренных значений в региональные параметры — в данном случае, в параметр sTimeFormat, (что должен был бы делать данный скрипт, если б он работал) — приводит к появлению различных артефактов у приложений, которые используют данный параметр в своей работе. В качестве такового примера я привёл обычный Microsoft Excel.

Другой пример — тот же PowerShell:

+ открыть спойлер

https://i.imgur.com/OLJBK9g.png


P.S. А что даёт 24 в:

… HH24:MM

?

10 (изменено: Rumata, 2019-08-04 12:29:24)

Re: VBS: Время работы системы

alexii пишет:

P.S. А что даёт 24 в:

… HH24:MM

?

Я всего лишь уточнил, что часы в 24-часовом формате (00..24), а не в 12-часовом (00..12)

( 2 * b ) || ! ( 2 * b )

11

Re: VBS: Время работы системы

Rumata, спасибо, теперь ясно.