bat文件自动关机

附图

写这个东东的背景,主要是服务于公司打印机的电脑,此电脑属于公用,但极少人会下班时给它关机。为了使这个电脑能再服务多几年,自动关机程序就诞生了。

难度不大,在写之前,我定义了几个基本的功能。

获取当前主机的系统时间

输入期望关机时间

运算时间差

执行自动关机命令

写入日志文件记录。

以上思路清晰之后便开始写程序,出于方便、快捷考虑,选用批处理

以下,附上源码

 1 @echo off
 2 set cout=0
 3 :start
 4 set a=%time%
 5 echo.
 6 echo 开始时间:%a%
 7 ping -n 5 127.0.0.1
 8 set b=%time%
 9 echo.
10 echo 检测:%b%
11 echo.
12 
13 ::对系统时间进行处理,方便计算
14 set /a h1=%a:~0,2%
15 ::echo 时%h1%
16 set /a m1=1%a:~3,2%-100
17 ::echo 分%m1%
18 set /a s1=1%a:~6,2%-100
19 ::echo 秒%s1%
20 echo.
21 
22 ::手动输入需要关机的时间
23 echo 输入格式为xx:xx:xx
24 set /p t1=请输入关机时间:
25 ::echo %t1%
26 set /a h2=%t1:~0,2%
27 ::echo 时%h2%
28 set /a m2=1%t1:~3,2%-100
29 ::echo 分%m2%
30 set /a s2=1%t1:~6,2%-100
31 ::echo 秒%s2%
32 echo 关机时间:%t1%33 echo.
34 
35 ::对关机时间进行处理,换算成秒
36 set /a h3=%h2%*3600
37 ::echo 时变秒%h3%
38 set /a m3=%m2%*60
39 ::echo 分变秒%m3%
40 set /a s3=%s2%
41 ::echo 秒%s3%
42 ::总时间
43 set /a wt=%h3%+%m3%+%s3%
44 ::echo 关机时间秒数%wt%
45 echo.
46 
47 
48 ::对起始时间进行运算
49 ::小时换算成秒
50 set /a ths1=%h1%*3600
51 :echo ts1:%ths1%
52 ::分钟换算成秒
53 set /a tms1=%m1%*60
54 ::echo tms1:%tms1%
55 ::总的时间
56 set /a ts1=%ths1%+%tms1%+%s1%
57 ::echo 起始时间秒数%ts1%
58 echo.
59 
60 
61 ::计算时间差值
62 set /a ts=%wt%-%ts1%
63 echo 时间差值%ts%64 echo.
65 
66 
67 ::进入命令行,执行自动关机任务
68 shutdown -s -t %ts%
69 echo 开始执行自动关机任务
70 echo.
71 echo ---*****************---
72 echo 如错误输入请执行取消命令
73 echo ---*****************---
74 echo.
75 set /p m2=请输入shutdown -a:
76 shutdown -a
77 echo.
78 echo %time% shutdown_times:%cout%>>auto_shutdown.txt
79 set /a cout=%cout%+1
80 ::不断循环
81 goto :start
原文地址:https://www.cnblogs.com/Blue-Moniter4/p/9635353.html