查看: 25028|回复: 6

[日期时间]

批处理如何取得开机时长?

[复制链接]

tempasdf

tempasdf

当前离线

积分17

电梯直达

1楼

发表于 2023-6-26 21:43:52

|

只看该作者

|倒序浏览

|阅读模式

各位:

想判断开机时间是否大于等于2天,想取得 powershell (get-date) - (gcim Win32_OperatingSystem).LastBootUpTime 命令中 Days : 后面的数值,命令行如何写?

回复

举报

77七

77七

当前离线

积分3264

2楼

发表于 2023-6-26 22:07:57

|

只看该作者

@echo off

for /f "tokens=1* delims=: " %%a in ('powershell -c "(get-date) - (gcim Win32_OperatingSystem).LastBootUpTime" ^|findstr /b "Days"') do (

echo %%b

if %%b geq 2 (

echo 大于等于2天

) else (

echo 小于2天

)

)

pause复制代码

保存为ansi编码格式

回复

举报

buyiyang

buyiyang

当前离线

积分883

3楼

发表于 2023-6-26 22:39:22

|

只看该作者

(New-TimeSpan (gcim Win32_OperatingSystem).LastBootUpTime).Days -ge 2复制代码

回复

举报

tempasdf

tempasdf

当前离线

积分17

4楼

楼主|

发表于 2023-9-21 18:28:10

|

只看该作者

回复 2# 77七

再请教一下,win7系统如何完成判断?

回复

举报

77七

77七

当前离线

积分3264

5楼

发表于 2023-9-21 21:11:53

|

只看该作者

回复 4# tempasdf

这个代码我不懂,或许可以升级powershell试试?

回复

举报

Five66

Five66

当前离线

积分1648

6楼

发表于 2023-9-21 22:03:25

|

只看该作者

这样子应该行吧

@if (0)/*==(0)/* echo off

set /a day=2*24*3600

for /f %%i in ('cscript //nologo //e:jscript "%~f0"') do set n=%%i

set n=%n:~0,-3%

if %day% leq %n% (

echo 大于或等于2天

) else (

echo 小于2天

)

pause&exit/b

rem */@end

var nil=null,td=new Date(),dt=new ActiveXObject('WbemScripting.SWbemDateTime');

for(var e=new Enumerator(GetObject("winmgmts:").InstancesOf ("Win32_OperatingSystem"));!e.atEnd();e.moveNext())

{

dt.value=e.item().LastBootUpTime;

WScript.Echo(td-dt.GetVarDate());

}

dt=nil;

复制代码

回复

举报

Nsqs

Nsqs

当前离线

积分570

7楼

发表于 2023-10-7 05:38:21

|

只看该作者

[datetime]::now.AddSeconds(-[System.Environment]::TickCount/1000)复制代码win7不知道,你可以试试

回复

举报