求检测开机时间后可以自动关机的批处理

求检测开机时间后可以自动关机的批处理,第1张

以下是一条可以实现检测电脑开机时间,并且在满足要求时自动关机的批处理代码:

@echo off

setlocal enabledelayedexpansion

REM 设置需要检测的开机时间,单位为分钟

set shutdownTime=60

REM 获取系统当前时间并计算开机时间

for /f "tokens=3,4 delims=: "i in ('uptime ^| find "days"') do (

set days=i

set upTime=j

)

REM 去除字符串前导零

set /a upTimeupTimeREM 计算开机时间,单位为分钟

set /a totalUpTime=(days 60 24) +upTimeREM 判断是否超过规定的开机时间

iftotalUpTime GTRshutdownTime (

REM 如果超过规定的开机时间,则关机

shutdown -s

) else (

REM 如果未超过规定的开机时间,则输出提示信息

echo 未满足自动关机条件,请继续使用计算机。

)

endlocal

在这条批处理代码中,我们使用了uptime命令来获取电脑的开机时间,并计算了开机的总时间。通过比较开机时间和预设的规定时间,来判断是否需要自动关机。如果未满足自动关机条件,则输出提示信息,如果满足条件则关机。注意,这里的单位是分钟,需要根据实际情况进行修改。

上个月比较好写,减去当前日期,再减1天

# date -d "-1 days" -d "-`date +%d` days" +%m

09

------------------------------------------------------------

下个月就不好写咯

date里的1 month有问题

比如今天是10月31日

# date -d "1 month" +%m

12

变成12月了

# date +%m

10

获取当前月份

那么下个月只好写代码了:

now_month=`date +%m`

if [ $now_month -ne 12 ];then

echo nextmonth is `expr $now_month + 1`

else

echo nextmonth is 01

fi

使用PowerShell获取0时区时间的方法如下:

1 首先,打开PowerShell,输入“Get-Date”命令,查看当前的时间;

2 然后,输入“Get-Date -uFormat %Y-%m-%d %H:%M:%S”命令,可以获取0时区的当前时间;

3 如果想获取其他时区的时间,可以使用“Get-Date -TimeZone 时区”命令,其中时区可以是UTC、GMT或者其他时区的名称;

4 最后,还可以使用“Get-Date -uFormat %Y-%m-%d %H:%M:%S”命令,结合“TimeZone”参数,获取指定时区的时间。

使用date命令加上合适的时间格式化字符串(+%s),会显示当前时间(或-d参数指定的时间)与1970-01-01 00:00:00相差的秒数(详细可以参考date的man手册)

所以基本想法就是使用date命令分别获取当前时间与文件修改时间的秒数,然后看这2个秒数之间是否有相差180秒以上。

获取当前时间比较简单,直接date +%s就ok了

下面看看如何获取文件时间

使用stat 命令后面跟一个文件名可以获取文件的状态,包括文件修改时间。其中文件修改时间会单独一行显示,格式如下:Modify: 2013-02-21 17:58:05404876407 +0800 (具体的精度可能系统不同略微有些差别,但大致格式是这样)

所以我们可以stat myfilename | grep Modify来获取文件的修改时间的信息,然后通过awk分别获取时间的日期和时间段

stat myfilename | grep Modify | awk '{print $2}'  #这句获取了日期段,即上面例子里面的2013-02-21

stat myfilename | grep Modify | awk '{split($3,var,"");print var[1]}' #这句获取了时间段,即上面例子里面的17:58:05,具体关于awk的使用可以参考awk的使用手册

那么现在可以获取文件修改时间与1970-01-01 00:00:00相差的描述了,就是date -d "$file_date $file_time" +%s

那么这个时间与当前时间想减的结果与180相比就可以知道是否满足条件了,满足条件的话就可以执行相应的命令。

参考代码如下:

current_datetime=`date +%s`

filedate=`stat tttxt | grep Modify | awk '{print $2}'`

filetime=`stat tttxt | grep Modify | awk '{split($3,var,"");print var[1]}'`

file_datetime=`date -d "$filedate $filetime" +%s

timedelta=`expr $current_datetime - $file_datetime`

if [ "$timedelta" -gt "180" ];then

echo "match condition"

fi

以上就是关于求检测开机时间后可以自动关机的批处理全部的内容,包括:求检测开机时间后可以自动关机的批处理、如何在SHELL获取当天时间的月份和上个月的月份还有下个月的月份、powershell获取0时区时间等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/9316345.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存