用CMD自动睡眠

因为学校开始断电了,因为自己的电脑要开wifi,又不想电池用完自动关机,所以想弄个自动睡眠

在控制面板->电源选项->更改计划设置->在用电池下面,使计算机进入睡眠状态改为1小时(或者其他)既可以在电脑断电后按计划自动进入睡眠状态

但是这个办法有个不好的地方就是,每天都会如此,如果有哪天自己想把电脑挂着抓个数据什么的,自动睡眠了就悲催了(我就是因为经历过才改为“从不”进入睡眠状态的-_-|||)

用cmd可以计划关机,步骤如下:win+R->运行框输入:cmd,回车->输入:shutdown -s -t 600即会在600s/60=10分钟后自动关机,取消的话输入:shutdonw -a

我在寻求有没有像上面定时关机这样可以休眠的办法

网上有说在cmd输入:

但是错误:AT 命令已弃用。请改用schtasks.exe。忘了说,我的系统是win8.1  -_-|||

稍微解释一下这句话,at是win7及以前创建计划任务的命令,ipc$入侵中就有用到,rundll32是windows一个系统关键文件,作用是执行DLL文件中的内部函数,powrprof.dll肯定就是电源管理相关的库了,SetSuspendState是参数,意思是设置挂起(睡眠)状态,注意powr不是power(-__-)b

查了一下schtasks.exe的语法好复杂~~~@_@

具体参数解释可以看这里 替代at命令的SchTasks命令使用教程和实例

结果报错:无效参数/选项 – ‘powerprof.dll,SetSuspendState’。

这里先稍微解释一下用的参数 /create是创建的意思,/tn 后面跟任务的名称 /tr 后面跟运行的程序或命令, /sc后面跟计划类型,这里once表示只执行一次 /st 任务执行开始时间,/st和/sc在一起就组合成定时效果。参数顺序貌似无关~

研究了一下/tr参数,有个网友解释得很到位:tr就是task route的意思,【文章Schtasks+计划任务参数+详解 里面参数的解释比较详细】,那么可能这里只能是单语句命令,不能带参数,那么我把rundll32 powerprof.dll,SetSuspendState放入一个批处理文件,然后再/tr后面直接跟改批处理文件路径就Ok,于是

在C盘下建立一个shuimian.bat文件,内容:

在cmd中输入:

成功:成功创建计划“Shuimian”。

查看刚才创建的计划,先来看下查看相关语法

在cmd输入

即可显示创建的任务信息列表

————–10-25分割线——————

更改创建的计划,在cmd输入

Enter后要求输入密码(如果有密码的话)确认

在cmd输入命令立马执行计划任务

实验发现,计划任务在电脑在用电池时不起作用,过了计划时间之后插上电源,立马执行了睡眠,在使用电源的情况下执行没有问题,所以有两个BUG:

1.使用电池时不起作用

2.插上电源立马起作用

再按照上面/query查询一下信息,发现有一项没有注意到“电源管理:在电池模式停止,不用电池启动”,说明在创建计划时有相关参数没有设定或设定错误~从之前的文档,以及微软msdn都没有相关参数介绍,该动用Google,全英文啊T^T,参考下面几篇文章:

Change settings for power for windows scheduled task

Windows 7: Command Line Task Scheduler Power Options

Is it possible to disable “the run on AC power” using schtasks.exe cmdline switches

发现要从xml导入参数,参考微软技术文档Import A Task

先将现在已经创建的计划导出到xml里,在cmd输入

备注: > 符号是覆盖输入到文件, >> 是追加输入到文件

现在关键的一步:更改setting.xml中DisallowStartIfOnBatteries和StopIfGoingOnBatteries两项的值为false

再将xml导入到计划列表

错误:当文件已存在时,无法创建该文件。

这里文件存在不是xml存在的意思了,而是计划存在,所以要删除该计划

输入y确认删除即ok了,再重新导入~~~

Query一下,发现电源管理一项的值为空,改时间测试一下,在插电源和不插电源都能成功运行~~~

写在最后:所有的计划任务都可以通过任务计划管理面板来操作,win+R运行输入:taskschd.msc,电源选项在“条件”选卡项里~如果有要在程序里实现计划任务就只有用命令行了~

2 thoughts on “用CMD自动睡眠”

  1. 直接输这个试试看C:WindowsSystem32rundll32.exe powrprof.dll,SetSuspendState 0,1,0
    我的win8.1可以
    来源http://blog.sina.com.cn/s/blog_86fe508401017m5s.html

    但是还是很佩服你这么小的需求都能去看文档各种琢莫折腾的劲头啊

发表评论

电子邮件地址不会被公开。 必填项已用*标注