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