如何从命令提示符/运行菜单使计算机进入睡眠状态?


144

我知道Windows上几乎所有内容(例如打开任何类型的应用程序)都可以从命令提示符或“ 运行”菜单中完成。

如何使计算机进入睡眠状态关机这是什么命令?


在命令提示符下键入shutdown,然后根据我的判断看一下在XP及更高版本上可以使用的输出。
user10547

Answers:


128

您会发现shutdown.exe成为您的朋友。

其他方便的命令请参阅这篇文章:

睡眠计算机(更多信息请参见https://superuser.com/a/463652/249349

锁工作站

休眠计算机

see answers by Scott Chamberlain and Eric L

重新启动电脑

Shutdown.exe -r -t 00

关机电脑

Shutdown.exe -s -t 00

编辑/更新:

如果打开休眠模式,看来使计算机休眠是有问题的。

从其他答案复制:

您可以尝试PsShutdown 或:

用于睡眠的命令rundll32.exe powrprof.dll,SetSuspendState 0,1,0是正确的-但是,如果您不关闭睡眠模式,它将进入睡眠模式而不是睡眠模式。

这样做的方法如下:

转到“开始”菜单,然后键入cmd.exe,右键单击并选择“以管理员身份运行”,以打开提升的命令提示符。输入以下命令:

powercfg -hibernate off

21
问题rundll32.exe powrprof.dll,SetSuspendState 0,1,0在于它无法正常工作。SetSuspendState将使计算机进入一种混合睡眠/休眠模式。从开始菜单使用“睡眠”按钮时,可以通过按键盘上的任意键来使计算机从睡眠状态恢复。使用此命令行,由于深度睡眠状态,make的恢复速度要慢得多,并且只有在按计算机上的电源按钮后,make才能恢复。按键无法恢复。那么...您如何使其像普通待机模式一样处于睡眠状态-只需按下一个键即可恢复?
Corporate Geek,2010年

6
赞成票并非没有必要。您的答案不能单独解决问题。读者应该能够从答案中收集到足够有用的信息来解决问题,不必跟踪到可能损坏或死机的其他站点的任何链接。
伊齐(Iszi)2011年

5
抱怨不回答所提出的问题:即使在链接页面中,启用休眠模式时,描述的使机器进入睡眠状态的方法也无法使用。
2011年

4
我也测试了Sleep命令,并且还可以确认它不能按预期工作。它与仇恨/拖钓无关,但是如果该命令不起作用,则该问题没有答案,因为这是问题的主要部分。
2012年

6
rundll32不应用于呼叫,SetSuspendState因为其签名与期望的签名不匹配rundll32。请参阅:support.microsoft.com/en-us/kb/164787msdn.microsoft.com/en-us/library/windows/desktop/…第一个参数将变为垃圾值,而不是FALSE值。这就是为什么它休眠而不睡觉的原因。
SergeyT '16

86

如果计算机启用了休眠模式,则其他人发布的方法将无法正常工作,该计算机将不会在键盘上唤醒,或更重要的是,不会在计划任务上唤醒。

Microsoft的Sysinternals工具之一是PsShutdownpsshutdown -d -t 0它使用的命令将使计算机正确休眠,而不是休眠


需要提升管理员权限
dsmtoday

3
在Windows 10的x64工作对我来说,建设1709
汉斯·洛肯

1
在Win10x64版本1709中为我工作,使用管理员用户帐户运行cmd,但没有run as administrator右键单击选项
Viktor Carlson

3
我可以在Windows 10上使用(甚至不能以管理员身份使用)。
民建联

3
在Windows 10 x64 Build 15063中运行。需要下载PsTools并将其psshutdown.exe存档复制到例如C:\Windows\System32,才能使用不带路径前缀的命令。然后,需要以psshutdown -d -t 0管理员权限执行才能挂起。这应该是可接受的答案,即使不是使用Windows预安装的工具也可以回答问题。
Arch Linux Tux

19

rundll32.exe powrprof.dll,SetSuspendState 0,1,0睡眠命令是正确的-但是,如果您不关闭休眠模式,它将进入休眠模式而不是休眠模式。

这样做的方法如下:

进入“开始”菜单并通过键入内容cmd.exe,右键单击并选择“以管理员身份运行”来打开提升的命令提示符。输入以下命令:

powercfg -hibernate off

5
我认为这是真正解决问题的第一个答案。我放置了这两行(首先关闭-hibernate),并制作了一个批处理文件,使PC进入睡眠状态。这样做的一个问题是,它实际上关闭了休眠状态,这不是我想要的,因此,要解决此问题,我添加了一个在“在工作站解锁时”触发的计划任务,以使用唯一一行为“ powercfg -hibernate off”。然后,我为第一个批处理文件配置了一个快捷键。做完了 作品魅力十足,谢谢!
2011年

太奇怪了 您需要先关闭休眠模式才能正常睡眠吗?powrprof.dll休眠模式打开时,是否有混合睡眠/挂起状态的名称?只是想知道。它与ACPI的任何州有关吗?
Ehtesh Choudhury 2012年

4
rundll32不应用于呼叫,SetSuspendState因为其签名与期望的签名不匹配rundll32。请参阅:support.microsoft.com/en-us/kb/164787msdn.microsoft.com/en-us/library/windows/desktop/…第一个参数将变为垃圾值,而不是FALSE。这就是为什么它休眠而不睡觉的原因。
SergeyT '16

在Windows 10下不起作用
T3rm1 '17

@EhteshChoudhury,这种情况下的问题是Rundll32参数不正确且完全不合适,因此它们实际上使用以下参数调用SetSuspendState:休眠:TRUE,ForceCritical:TRUE,DisableWakeEvents:TRUE。最后一点说明了为什么除了电源按钮之外什么都不能唤醒PC。碰巧的是,禁用时尝试进入休眠状态会使您的PC在Win7中进入睡眠状态,这也许是为什么它对某些人不起作用的原因。
SilverbackNet '18

10

NirCmd可在Windows 8上运行(我假定它也可在Windows 7上运行)→ http
://www.nirsoft.net/utils/nircmd.html命令为standby,但它会使计算机进入睡眠状态。

nircmd.exe standby

如果启用了混合睡眠,它将起作用。即,它使计算机进入睡眠状态,并在断电的情况下将内存复制到磁盘。


1
无需提升为管理员即可使用。在启用或不启用休眠状态下均可使用。可以与混合睡眠一起使用。Win10的不错的解决方案。
dsmtoday

3

请参阅Wizmo的免费实用程序,它可以完成很多事情。
您要查找的命令可能是:

wizmo待机


1
Wizmo存在与以下问题相同的问题rundll32.exe powrprof.dll,SetSuspendState 0,1,0–将计算机置于休眠状态而不是睡眠状态
Andomar

2
不可以,因为Vista实际上将计算机置于Hybrid Sleep中。如果您不想这样做,请关闭“混合睡眠”
harrymc

1
wizmo停电在Windows 8.1、10中起作用。
YumYumYum

Wizmo的工作很棒。不幸的是,我的企业病毒扫描程序删除了它,因为它包含使mcafee认为它包含木马的某些序列。
巴斯蒂安

@bastian:Mcafee一直是应用程序编写者的坏消息(从个人经验来看)。
harrymc

3

我已经为创建了一个快捷方式rundll32.exe powrprof.dll,SetSuspendState 0,1,0(也尝试了0,0,0),但是运行该快捷方式似乎会使我的PC进入休眠状态。我无法使用键盘唤醒PC。我必须按下电源按钮,并且PC会显示主板上的留言等。

阅读Windows API文档后,我创建了一个非常简单的程序,只需键入3行。我已经将我编译的可执行文件上载到了此页面(单击“ SleepTest.exe”),但是此文件可能会在一段时间后删除(这是我通过快速的Google搜索发现的免费文件托管站点)。

如果您不信任我(完全可以)或文件已被删除,则可以自己编译代码。您需要将“ PowrProf.lib”添加到链接器的其他依赖项。

#include "stdafx.h"
#include "windows.h" <-- Added this to make it work on Windows.
#include "PowrProf.h" <-- Added this to use the sleep function.

int main()
{
    SetSuspendState(FALSE, FALSE, FALSE); <-- Added this actual call.
    return 0;
}

rundll32.exe powrprof.dll,SetSuspendState 0,1,0似乎在做同样的事情,但是不知何故,上面的程序没有使计算机进入休眠状态。我可以通过按键盘上的任意键立即唤醒PC(不发送任何主板上的消息等)。


2

您可以从命令行中启动挂起或休眠选项,如下所示并在本文中进行了引用。

%windir%\System32\rundll32.exe powrprof.dll,SetSuspendState

如果您的计算机设置为允许休眠,则上述命令将启动休眠模式。如果禁用了休眠功能,则它将进入待机状态。正如其他用户先前回答的那样,shutdown.exe /?将提供许多关闭选项。


1
rundll32不应用于呼叫,SetSuspendState因为其签名与期望的签名不匹配rundll32。请参阅:support.microsoft.com/en-us/kb/164787msdn.microsoft.com/en-us/library/windows/desktop/…第一个参数获取垃圾信息,而不是FALSE,因此它始终休眠而不是进入休眠状态。睡觉。
SergeyT 2016年

1

您必须首先在Windows中禁用“休眠”,然后将计算机置于“ 睡眠”状态。使用以下两个命令:

powercfg -hibernate off
rundll32.exe powrprof.dll,SetSuspendState 0,1,0

为了进行相反的操作(使计算机休眠),请使用以下命令:

powercfg -hibernate on
rundll32.exe powrprof.dll,SetSuspendState Hibernate

3
rundll32不用于呼叫SetSuspendState,不应该用于此目的。第一个参数获取垃圾,而不是正确的值。因此,它总是休眠而不是睡觉(如果您根本没有禁用休眠)。
SergeyT 2016年

@SergeyT似乎对我有用(禁用休眠模式后);您是说这会损坏窗户吗?
moondra

它破坏了堆栈(因为rundll32需要一个不同的调用签名,所以它将未真正放置在堆栈中的内容弹出)。这会导致意外的行为。
imoatama'3

@imoatama好发现...
masterxilo

1

是有关使用CLI关机的文章。

Microsoft提供了PsTools,它可让您关闭CLI以及其他有用的工具。你可以在这里得到。


1

QUICK SLEEPER对我有效(在Windows 7,8,10中有效)。

ps源代码可在此处获得


1
您是否有可能提供指向从中获取文件的实际站点的链接?直接链接到下载文件,尤其是在使用ga URL shorter时,可以使文件看起来特别可疑,因为它是恶意软件编写者经常采用的策略。
Mokubai

好的,我已经更新了官方网站的链接。
T.Todua '16

1

如果您有可用的Python(带有pywin32),也可以使用以下命令直接调用SetSuspendState函数:

import ctypes
ctypes.windll.PowrProf.SetSuspendState(0, 1, 0)

可以轻松地将其放入批处理文件或快捷方式排序中,例如:

pythonw -c "import ctypes; ctypes.windll.PowrProf.SetSuspendState(0, 1, 0)"

因此,如果您没有与解释器关联的.py文件,则只需双击链接即可。


1

问题的关闭部分对于每个人都是显而易见的。
shutdown.exe /?显示关机/重新启动/高级选项启动/固件启动的所有选项。

但是我发现睡眠部分周围有很多扑朔迷离的动作。
每个人都会得到它rundll32.exe不应该用来调用随机函数的功能,它在这里完全是出于巧合而休眠的。但这就是Windows的本质-人们经常在黑盒子里闲逛,他们发现了数百种变通办法来完成工作(大声疾呼到剂量提示)。

有很多建议使用外部工具的适当 ”解决方案,但是即使多年来这个问题一直很活跃,我似乎也找不到本地的(混合/拼音/其他)批处理脚本。 所以这是我简单的power_sleep.bat

@echo off &mode 32,2 &color cf &title Power Sleep
set "s1=$m='[DllImport ("Powrprof.dll", SetLastError = true)]"
set "s2=static extern bool SetSuspendState(bool hibernate, bool forceCritical, bool disableWakeEvent);"
set "s3=public static void PowerSleep(){ SetSuspendState(false, false, false); }';"
set "s4=add-type -name Import -member $m -namespace Dll; [Dll.Import]::PowerSleep();"
set "ps_powersleep=%s1%%s2%%s3%%s4%" 
call powershell.exe -NoProfile -NonInteractive -NoLogo -ExecutionPolicy Bypass -Command "%ps_powersleep:"=\"%"
exit

它甚至可以用作一个大的单行命令:

powershell.exe -C "$m='[DllImport(\"Powrprof.dll\",SetLastError=true)]static extern bool SetSuspendState(bool hibernate,bool forceCritical,bool disableWakeEvent);public static void PowerSleep(){SetSuspendState(false,false,false); }';add-type -name Import -member $m -namespace Dll; [Dll.Import]::PowerSleep();"
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.