BAT的一个定时关机脚本

您所在的位置:网站首页 win7关机脚本bat BAT的一个定时关机脚本

BAT的一个定时关机脚本

2024-07-09 11:55| 来源: 网络整理| 查看: 265

– 写这个脚本的目的主要是感觉Windows自带的shutdown -s -t参数是秒,而对于大多数使用场景,我更需要的是在特定的时间自动关机,这就需要程序自动计算当前时间和目标时间的时间间隔,并转换成秒。 – 当然也有同学使用 at 命令在Windows自带计划任务库中添加计划任务,但是这种方法需要请求管理员权限,虽然代码简单,输入参数可以是24小时格式的时间,但是操作过程有点繁琐,需要请求高权限,如果给别人使用时给用户一种很不安全的感觉,个人还是希望使用shutdown命令还是较好的选择,而且在设置成功后系统会提示关机计划。 因此,我希望能够编写一个利用shutdown命令的自动关机程序,输入参数是计划关机的时间点,采用24小时格式输入。

::定时关机脚本 ::Author:Tony Chang ::2016.10.18 ::原创代码,转载请注明出处 @echo off mode con lines=25 setlocal enabledelayedexpansion title 定时关机 color 1f cls set "timeGoal= 21:15" echo. echo. echo. echo 时间使用24小时制(如2:15),默认关机时间为:%timeGoal% echo. echo 取消已有关机计划 按N; echo. echo.当前时间 %time:~0,5% echo. echo ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ echo. set /p "timeGoal= 请输入关机时间:" echo. if %timeGoal%==N goto cancel if %timeGoal%==n goto cancel set tmp=%timeGoal% ::将"号替换成空格 set /a num = 0 set "tmp=%tmp:"= %" :next if not "%tmp:~0,1%"==":" ( set /a num+=1 set "tmp=%tmp:~1%" goto next ) set /a hourNow = %time:~0,2% set /a minuteNow = %time:~3,2% set /a secNow = %time:~6,2% set /a hourGoal =!timeGoal:~0,%num%! set /a num+=1 set /a minuteGoal = !timeGoal:~%num%,2! set /a "diffT = hourGoal - hourNow" ::diffTnul

代码写的简单,因为不是很熟悉BAT的编程,一些变量的用法也有些乱,但是基本功能是实现。

自定义关机时间;

在无输入的情况下,默认关机时间。(有时候需要偷偷离开一下,又怕实验室老板发现,就需要在实验室下班前保持电脑开启,下班时自动关机,这个功能是专门为我这种懒人定制的~~~~;-));

取消已有关机计划;

计划设定结果显示;

实现流程就是获取目标时间和当前时间,求差,判断是否是当天任务,将时间差转换成秒后调用 shutdown命令。有一个小trick,在获取输入时间,会有不同长度的输入,如2:15,15:40。为了解决这一问题,由于不是很熟悉BAT字符串操作,采取了比较笨的办法,从头遍历字符串,直到找到:符号停止,记录长度num。 代码如下:

set tmp=%timeGoal% ::将"号替换成空格 set /a num = 0 set "tmp=%tmp:"= %" :next if not "%tmp:~0,1%"==":" ( set /a num+=1 set "tmp=%tmp:~1%" goto next )

求得的参数在截取小时和分钟时也有些不一样的用法,使用了%和!来表示变量。 解释: 如果使用行内或括号内定义或修改的变量,需要启用延迟变量扩充,用叹号引用变量。bat文件中用 setlocal enabledelayedexpansion 启用延迟变量扩充,命令提示符窗口启用延迟变量扩充

setlocal enabledelayedexpansion set /a hourGoal =!timeGoal:~0,%num%! set /a num+=1 set /a minuteGoal = !timeGoal:~%num%,2!

实现默认输入参数值:

set "timeGoal= 21:15" set /p "timeGoal= 请输入关机时间:"

运行结果图 在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3