VBS/WSH/JS - [решено] преобразование даты и получение UPTime сервера
-
andr_mozg
VBS/WSH/JS - [решено] преобразование даты и получение UPTime сервера
Доброго времени суток.
получаю дату LastBootUpTime вида 20150529171135.595198+180
для того чтобы получить время работы сервера необходимо видимо вычесть от текущей даты, а формат данной даты не тот.
Как красиво и правильно преобразовать и получить UPTime ?
для JS.
Спасибо
получаю дату LastBootUpTime вида 20150529171135.595198+180
для того чтобы получить время работы сервера необходимо видимо вычесть от текущей даты, а формат данной даты не тот.
Как красиво и правильно преобразовать и получить UPTime ?
для JS.
Спасибо
-
andr_mozg
Re: VBS/WSH/JS - [решено] преобразование даты и получение UPTime сервера
andr_mozg, на JS (без WMI):
Код:
Советую еще почитать в консоли typeperf /?
P.S.Можно uptime получить и на чистом cmd:
Код:
Код:
Код: Выделить всё
(function() {
var enc, arr, i, s = '', std,
loc = {
419 : ['019', '1251'],
409 : ['009', '1252']
};
Array.prototype.to_s = function() {
var s = '';
for (var i = 0; i < this.length; i++) {
s += i === 0 ? parseInt(this[i]) + '.'
: (parseInt(this[i]) < 10 ? '0' + parseInt(this[i]) : parseInt(this[i])) + ':';
}
return s.replace(/\:$/, '');
};
with (new ActiveXObject('WScript.Shell')) {
enc = Number(RegRead('HKCU\\Control Panel\\International\\Locale'));
arr = RegRead(
'HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\' +
'PerfLib\\' + loc[enc][0] + '\\Counter'
).toArray();
for (i = 0; i < arr.length; i++) {
if (parseInt(arr[i]) === 2 || parseInt(arr[i]) === 674) {
s += '\\' + arr[i + 1];
}
}
std = Exec('cmd /c chcp');
i = std.StdOut.ReadAll().match(/\d+/);
std = Exec('cmd /q /k echo off');
std.StdIn.WriteLine('chcp ' + loc[enc][1]);
std.StdIn.WriteLine('typeperf "' + s + '" -sc 1');
std.StdIn.WriteLine('chcp ' + i + '&exit');
s = parseInt(std.StdOut.ReadAll().match(/\d+\.\d+/g)[2]);
};
WScript.echo([s / 86400, s / 3600 % 24, s % 3600 / 60, s % 60].to_s());
}());Советую еще почитать в консоли typeperf /?
P.S.Можно uptime получить и на чистом cmd:
Код:
Код: Выделить всё
@echo off
setlocal
chcp 1251>nul
for /f "tokens=3 delims=.," %%i in (
'typeperf "\Система\Время работы системы" -sc 1^
^| findstr /rc:"\:"'
) do set "t=%%~i"
set /a "ss=t%%60", "t/=60", "mm=t%%60", "t/=60", "hh=t%%24", "dd=t/24"
if %hh% lss 10 set "hh=0%hh%"
if %mm% lss 10 set "mm=0%mm%"
if %ss% lss 10 set "ss=0%ss%"
echo:%dd%.%hh%:%mm%:%ss%
endlocal&chcp 866>nul
exit /b-
andr_mozg
Re: VBS/WSH/JS - [решено] преобразование даты и получение UPTime сервера
Интересная разница:
Код:
Код:
Код: Выделить всё
> (get-ciminstance win32_operatingsystem).lastbootuptime
12 ноября 2015 г. 21:37:34
> (get-wmiobject win32_operatingsystem).lastbootuptime
20151112213734.494656+180-
andr_mozg
Re: VBS/WSH/JS - [решено] преобразование даты и получение UPTime сервера
Спасибо, но как получить аптайм я знаю, мне нужно именно использовать то что есть.
я пользую селект WMI и иначе делать не могу.
нужно просто преобразовать то значение что описал и отнять от текущего времени.
Как примерно действовать я знаю, мне нужно получить в другом формате дату а тут проблема.
я пользую селект WMI и иначе делать не могу.
нужно просто преобразовать то значение что описал и отнять от текущего времени.
Как примерно действовать я знаю, мне нужно получить в другом формате дату а тут проблема.
-
andr_mozg
Re: VBS/WSH/JS - [решено] преобразование даты и получение UPTime сервера
Цитата andr_mozg:
мне нужно получить в другом формате дату а тут проблема
Подробнее: какая дата, какой формат? Суть задачи вроде как сводилась к получению uptime или что-то еще, что из Вас нужно клещами тянуть?
мне нужно получить в другом формате дату а тут проблема
Подробнее: какая дата, какой формат? Суть задачи вроде как сводилась к получению uptime или что-то еще, что из Вас нужно клещами тянуть?
-
greg zakharov
Re: VBS/WSH/JS - [решено] преобразование даты и получение UPTime сервера
Сводится к получению uptime, в часах минутах дело десятое.
получаю текущее время new Date() но отнять от него свое время я не могу формат не совпадает, вот и вся проблема.
нечего тянуть не надо два раза написал что и зачем
получаю текущее время new Date() но отнять от него свое время я не могу формат не совпадает, вот и вся проблема.
нечего тянуть не надо два раза написал что и зачем

-
andr_mozg
Re: VBS/WSH/JS - [решено] преобразование даты и получение UPTime сервера
Цитата andr_mozg:
получаю текущее время new Date() но отнять от него свое время я не могу формат не совпадает
Тю! Только и всего то?!
Код:
Покажет то, что нужно.
получаю текущее время new Date() но отнять от него свое время я не могу формат не совпадает
Тю! Только и всего то?!
Код:
Код: Выделить всё
(function(srv) {
var e = new Enumerator(
GetObject('winmgmts:\\\\' + srv + '\\root\\CIMV2').ExecQuery(
'SELECT * FROM Win32_OperatingSystem', 'WQL', 0x10 | 0x20
)
);
var dt = new ActiveXObject('WbemScripting.SWbemDateTime');
for (; !e.atEnd(); e.moveNext()) {
dt.Value = e.item().LastBootUpTime;
}
WScript.echo(new Date() - dt.GetVarDate());
}(
WScript.Arguments.length !== 1
? (function() {
WScript.echo('An error has been occured.');
WScript.Quit(1);
}())
: WScript.Arguments.Unnamed(0)
));Покажет то, что нужно.
-
andr_mozg
Re: VBS/WSH/JS - [решено] преобразование даты и получение UPTime сервера
я видимо сегодня не в ударе 
объясняю более точно.
есть переменная LastBootUpTime ="20150529171135.595198+180"
есть вторая time = new date()
uptime = time- LastBootUpTime
но так как LastBootUpTime имеет другой формат вычесть не получится.
а надо
))
вопрос как преобразовать переменную LastBootUpTime так что бы я смог получить разницу дат переменных
LastBootUpTime и time
селекты и активХобджекты не подходят...
переменная уже есть и вторая то же надо просто преобразовать и вычесть.
вобщем имеем что имеем без доп запросов и обработак!
вроде теперь все объяснил
спасибо

объясняю более точно.
есть переменная LastBootUpTime ="20150529171135.595198+180"
есть вторая time = new date()
uptime = time- LastBootUpTime
но так как LastBootUpTime имеет другой формат вычесть не получится.
а надо
))вопрос как преобразовать переменную LastBootUpTime так что бы я смог получить разницу дат переменных
LastBootUpTime и time
селекты и активХобджекты не подходят...
переменная уже есть и вторая то же надо просто преобразовать и вычесть.
вобщем имеем что имеем без доп запросов и обработак!
вроде теперь все объяснил

спасибо
-
greg zakharov
Re: VBS/WSH/JS - [решено] преобразование даты и получение UPTime сервера
Цитата andr_mozg:
селекты и активХобджекты не подходят...
Простите, а как Вы тогда с Wbem работаете? Он не через Automation берётся, а откуда-то из воздуха? Что «new ActiveXObject», что «GetObject» пользуют один и тот же механизм.
селекты и активХобджекты не подходят...
VBS/WSH/JS - [решено] преобразование даты и получение UPTime сервера
Простите, а как Вы тогда с Wbem работаете? Он не через Automation берётся, а откуда-то из воздуха? Что «new ActiveXObject», что «GetObject» пользуют один и тот же механизм.
-
Iska
Re: VBS/WSH/JS - [решено] преобразование даты и получение UPTime сервера
Iska, видать камрад через wmic извлек LastBootUpTime, а хочет его конвертануть через WSH в TimeSpan или что-то в этом роде.