1 (изменено: JSmаn, 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, спасибо, теперь ясно.

12 (изменено: Mishel, 2019-09-27 15:23:54)

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

Каюсь бОльшую часть кода я взял здесь:
https://hsp.kz/kak-uznat-vremya-raboty- … -zagruzki/
От себя добавил только запись времени компьютера в системный трей.
P.S. Если в коде "куча ошибок", то почему он у меня всё-таки работает?!!

P.P.S. что касается региональных настроек...
сорри не доглядел как оно в экселе, но никто же не заставляет использовать данный скрипт

13 (изменено: alexii, 2019-09-27 20:51:56)

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

Mishel пишет:

P.S. Если в коде "куча ошибок", то почему он у меня всё-таки работает?!!

Например, у Вас сильно кривые пальцы, и Вы некорректно скопировали код Вашего скрипта на форум. То, что выложено — работать не может в принципе.

Mishel пишет:

бОльшую часть кода я взял здесь:
https://hsp.kz/kak-uznat-vremya-raboty- … -zagruzki/

Ну, вот, и начните сравнивать:

set objWMI = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

и:

Set objWMI=("winmgmts:" & strComputer & "\root\cimv2")

Затем:

set colOS = objWMI.InstancesOf("Win32_OperatingSystem")

и:

Set colOS=objWMI.InstanceOf("Win32_OperatingSystem")

и т.д., и т.д., и т.д. Ровно то, о чём я писал выше.