ฉันจะทำให้คอมพิวเตอร์เข้าสู่โหมดสลีปจากเมนู Command Prompt / Run ได้อย่างไร


143

ฉันรู้ว่าเกือบทุกอย่างบน Windows เช่นการเปิดแอปพลิเคชันทุกประเภทสามารถทำได้จากcommand promptหรือจากเมนูRun

ฉันจะทำให้คอมพิวเตอร์เข้าสู่โหมดสลีปหรือปิดเครื่องได้อย่างไร คำสั่งสำหรับสิ่งนั้นคืออะไร?


พิมพ์ shutdown บน command prompt แล้วดูที่ output ที่ทำงานบน XP ขึ้นไปจากสิ่งที่ฉันสามารถบอกได้
user10547

ที่เกี่ยวข้อง: superuser.com/questions/39584/…
Nayuki

คำตอบ:


127

คุณจะพบว่าshutdown.exeเป็นเพื่อนของคุณ

คำสั่งที่มีประโยชน์อื่น ๆ ดูโพสต์นี้ :

Sleep Computer (อ่านเพิ่มเติมได้ที่https://superuser.com/a/463652/249349 )

ล็อคเวิร์กสเตชัน

คอมพิวเตอร์ไฮเบอร์เนต

see answers by Scott Chamberlain and Eric L

รีสตาร์ทคอมพิวเตอร์

Shutdown.exe -r -t 00

ปิดเครื่องคอมพิวเตอร์

Shutdown.exe -s -t 00

แก้ไข / UPDATE:

ดูเหมือนว่าการนอนคอมพิวเตอร์เป็นปัญหาหากเปิดเครื่องไฮเบอร์เนต

คัดลอกจากคำตอบอื่น ๆ :

คุณสามารถลองPsShutdown หรือ:

คำสั่ง rundll32.exe powrprof.dll, SetSuspendState 0,1,0 สำหรับการสลีปนั้นถูกต้อง - อย่างไรก็ตามมันจะจำศีลแทนการสลีปหากคุณไม่ปิดไฮเบอร์เนต

นี่คือวิธีการทำ:

ไปที่เมนูเริ่มและเปิดพร้อมท์คำสั่งแบบยกระดับโดยพิมพ์ cmd.exe คลิกขวาแล้วเลือกเรียกใช้ในฐานะผู้ดูแลระบบ พิมพ์คำสั่งต่อไปนี้:

powercfg -hibernate off

20
ปัญหาrundll32.exe powrprof.dll,SetSuspendState 0,1,0คือมันไม่ทำงานตามที่ควร SetSuspendStateจะทำให้คอมพิวเตอร์เข้าสู่โหมดไฮบริดสลีป / ไฮเบอร์เนต เมื่อคุณใช้ปุ่มสลีปจากเมนูเริ่มต้นคุณสามารถกลับมาใช้งานคอมพิวเตอร์จากโหมดสลีปได้โดยกดปุ่มใด ๆ บนแป้นพิมพ์ของคุณ การใช้บรรทัดคำสั่งนี้ทำให้การทำงานต่อช้าลงมากเนื่องจากสถานะสลีปลึกขึ้นและสามารถทำงานต่อได้ต่อเมื่อคุณกดปุ่มเปิดปิดบนคอมพิวเตอร์ของคุณ มันไม่สามารถดำเนินการต่อสำหรับการกดปุ่ม ดังนั้น ... คุณจะทำให้โหมดสลีปอยู่ในโหมดสแตนด์บายปกติได้อย่างไร - กลับมาทำงานต่อได้ด้วยการกดปุ่ม?
Corporate Geek

5
downvote ไม่ได้อยู่ในขั้นต่ำที่ไม่รับประกัน คำตอบของคุณไม่ได้ตอบคำถามด้วยตนเอง ผู้อ่านควรสามารถรวบรวมข้อมูลที่เป็นประโยชน์จากคำตอบในการแก้ปัญหาได้โดยไม่ต้องติดตามลิงก์ใด ๆ ไปยังเว็บไซต์อื่นซึ่งอาจเสียหรือตาย
Iszi

5
Downvoted ที่ไม่ตอบคำถามที่ถาม: แม้ในหน้าที่เชื่อมโยงแล้ววิธีที่อธิบายเพื่อให้เครื่องเข้าสู่โหมดสลีปจะไม่ทำงานเมื่อเปิดใช้งานโหมดไฮเบอร์เนต
akurtser

4
ฉันได้ทดสอบคำสั่ง Sleep ด้วยและยังสามารถยืนยันได้ว่ามันไม่ทำงานตามที่ตั้งใจไว้ มันไม่มีส่วนเกี่ยวข้องกับการเกลียดชัง / การหมุนรอบ แต่ถ้าคำสั่งนั้นใช้ไม่ได้แสดงว่าคำถามนั้นยังไม่ได้ตอบเนื่องจากเป็นส่วนหลักของคำถาม
reSPAWNed

6
rundll32ไม่ควรใช้โทรSetSuspendStateเพราะลายเซ็นไม่ตรงกับที่คาดrundll32ไว้ โปรดดู: support.microsoft.com/en-us/kb/164787และmsdn.microsoft.com/en-us/library/windows/desktop/ ......พารามิเตอร์แรกรับขยะแทนที่จะเป็นค่า FALSE มันเป็นเหตุผลทำไมมันจำศีลแทนที่จะไปนอน
SergeyT

85

วิธีการโพสต์โดยบุคคลอื่นไม่ทำงานอย่างถูกต้องหากคอมพิวเตอร์เปิดใช้งานการไฮเบอร์เนตคอมพิวเตอร์จะไม่ปลุกบนแป้นพิมพ์หรือที่สำคัญกว่านั้นไม่ทำงานตามเวลาที่กำหนด

หนึ่งในเครื่องมือ Sysinternals ของ Microsoft คือPsShutdownโดยใช้คำสั่งpsshutdown -d -t 0มันจะทำงานอย่างถูกต้องไม่ได้จำศีลคอมพิวเตอร์


ต้องการการยกระดับเป็นผู้ดูแลระบบ
dsmtoday

2
ใช้งานได้กับฉันใน Windows 10 x64, Build 1709
Hans Løken

1
ทำงานได้สำหรับฉันใน Win10x64 เวอร์ชัน 1709 เรียกใช้ cmd ด้วยบัญชีผู้ใช้ผู้ดูแลระบบ แต่ไม่มีrun as administratorตัวเลือกคลิกขวา
Viktor Carlson

2
ทำงานได้กับฉันด้วย Windows 10 (ไม่ได้เป็นผู้ดูแลระบบ)
DAB

2
ใช้งานได้ใน Windows 10 x64 Build 15063 หนึ่งต้องดาวน์โหลด PsToolsและคัดลอกpsshutdown.exeจาก archiv ไปยังเช่นC:\Windows\System32เพื่อให้สามารถใช้คำสั่งโดยไม่ต้อง pathprefix ต้องดำเนินการอย่างใดอย่างหนึ่งpsshutdown -d -t 0ด้วยสิทธิ์ผู้ดูแลระบบเพื่อระงับ นี่ควรเป็นคำตอบที่ยอมรับได้ทำให้มันตอบคำถามแม้ว่าจะไม่ได้ใช้เครื่องมือติดตั้ง Windows ก็ตาม
Arch Linux Tux

19

คำสั่งrundll32.exe powrprof.dll,SetSuspendState 0,1,0สำหรับการนอนหลับนั้นถูกต้อง - อย่างไรก็ตามมันจะจำศีลแทนการนอนหลับถ้าคุณไม่ปิดโหมดไฮเบอร์เนต

นี่คือวิธีการทำ:

ไปที่เมนู Start และเปิดพร้อมท์คำสั่งโดยการพิมพ์cmd.exe, คลิกขวาและเลือกเรียกใช้ในฐานะผู้ดูแลระบบ พิมพ์คำสั่งต่อไปนี้:

powercfg -hibernate off

4
ฉันคิดว่ามันเป็นคำตอบแรกที่แก้ได้จริง ฉันใส่ทั้งสองบรรทัด (- ยับยั้งก่อน) และสร้างไฟล์แบตช์ที่ทำให้พีซีเข้าสู่โหมดสลีป ปัญหาอย่างหนึ่งก็คือมันปิดการจำศีลซึ่งไม่ใช่สิ่งที่ฉันต้องการดังนั้นในการแก้ไขฉันได้เพิ่มงานที่กำหนดเวลาไว้ที่ "เปิดเวิร์กสเตชัน" เพื่อเปิดใช้งานโหมดไฮเบอร์เนตที่มีบรรทัดเดียวเท่านั้น " powercfg - ห้ามปิด " จากนั้นฉันกำหนดค่าคีย์สั้นสำหรับไฟล์แบตช์แรก เสร็จสิ้น ทำงานเหมือนมีเสน่ห์ขอบคุณ!
akurtser

นั่นแปลกมาก จำเป็นต้องปิดการจำศีลก่อนที่คุณจะนอนหลับได้อย่างถูกต้องหรือไม่ มีชื่อของไฮบริดสลีป / สถานะพักpowrprof.dllเมื่อสถานะไฮเบอร์เนตเปิดอยู่หรือไม่? แค่อยากรู้ มันเกี่ยวข้องกับรัฐ ACPI ใด ๆ หรือไม่?
Ehtesh Choudhury

3
rundll32ไม่ควรใช้โทรSetSuspendStateเพราะลายเซ็นไม่ตรงกับที่คาดrundll32ไว้ โปรดดู: support.microsoft.com/en-us/kb/164787และmsdn.microsoft.com/en-us/library/windows/desktop/ ......พารามิเตอร์แรกรับขยะแทนที่จะเป็น FALSE มันเป็นเหตุผลทำไมมันจำศีลแทนที่จะไปนอน
SergeyT

ไม่ทำงานภายใต้ Windows 10
T3rm1

@EhteshChoudhury ปัญหาในกรณีนี้คือพารามิเตอร์ Rundll32 ไม่ถูกต้องและไม่ได้ใช้อย่างสมบูรณ์ดังนั้นพวกเขาจึงเรียก SetSuspendState ด้วยพารามิเตอร์: Hibernate: TRUE, ForceCritical: TRUE, DisableWakeEvents: TRUE บิตสุดท้ายอธิบายว่าทำไมคุณไม่สามารถปลุกพีซีด้วยอะไรได้นอกจากปุ่มเปิดปิด เป็นเรื่องบังเอิญที่การพยายามจำศีลเมื่อปิดการใช้งานจะทำให้พีซีของคุณเข้าสู่โหมดสลีปใน Win7 และอาจเป็นเพราะเหตุใดบางคนถึงไม่ทำงาน
SilverbackNet

9

NirCmd ทำงานบน Windows 8 (ฉันถือว่ามันใช้งานได้กับ Windows 7) → http://www.nirsoft.net/utils/nircmd.html
คำสั่งคือstandbyแต่จะทำให้คอมพิวเตอร์เข้าสู่โหมดสลีป

nircmd.exe standby

หากคุณเปิดใช้งานไฮบริดสลีปจะทำงาน เช่นทำให้คอมพิวเตอร์เข้าสู่โหมดสลีปและคัดลอกหน่วยความจำไปยังดิสก์ในกรณีที่ไฟฟ้าดับ


สิ่งนี้ใช้ได้โดยไม่ต้องยกระดับเป็นผู้ดูแลระบบ ทำงานร่วมกับหรือไม่เปิดใช้งานโหมดไฮเบอร์เนต ทำงานตามที่คาดไว้ด้วยการนอนหลับแบบไฮบริด ทางออกที่ดีสำหรับ Win10
dsmtoday

3

ดูยูทิลิตี้ฟรีของWizmoซึ่งสามารถทำสิ่งต่างๆมากมาย
คำสั่งที่คุณกำลังมองหาน่าจะเป็น:

สแตนด์บาย wizmo


1
Wizmo มีปัญหาเช่นเดียวกับrundll32.exe powrprof.dll,SetSuspendState 0,1,0- มันทำให้คอมพิวเตอร์อยู่ในโหมดไฮเบอร์เนตไม่ได้หลับ
Andomar

2
ไม่มีตั้งแต่ Vista มันจริงทำให้คอมพิวเตอร์ในการนอนหลับไฮบริด ถ้าคุณไม่อยากให้เรื่องนี้แล้วปิดนอนไฮบริด
harrymc

1
wizmo ทรอนิกทำงานใน windows 8.1, 10 ยอดเยี่ยม !!!!!!!!!!!!!
YumYumYum

Wizmo ทำงานได้ดี แต่น่าเสียดายที่สแกนไวรัสองค์กรของฉันลบมันเป็นมันมีลำดับบางอย่างที่ทำให้ McAfee คิดว่ามันมีโทรจัน
bastian

@bastian: Mcafee เป็นข่าวร้ายเสมอสำหรับนักเขียนแอปพลิเคชัน (จากประสบการณ์ส่วนตัว)
harrymc

3

ฉันสร้างทางลัดสำหรับrundll32.exe powrprof.dll,SetSuspendState 0,1,0(ลองด้วย 0,0,0) แต่การใช้ทางลัดนั้นดูเหมือนจะทำให้พีซีของฉันเข้าสู่โหมดไฮเบอร์เนต ฉันไม่สามารถปลุกพีซีโดยใช้แป้นพิมพ์ได้ ฉันต้องกดปุ่มเปิดปิดและพีซีแสดงข้อความโพสต์บนเมนบอร์ด ฯลฯ

หลังจากอ่านเอกสาร Windows APIฉันสร้างโปรแกรมง่าย ๆ ด้วยการพิมพ์เพียง 3 บรรทัด ฉันได้อัปโหลดไฟล์ปฏิบัติการที่ฉันรวบรวมไปยังหน้านี้ (คลิกที่ "SleepTest.exe")แต่ไฟล์นี้อาจถูกลบหลังจากผ่านไปครู่หนึ่ง (นี่เป็นเว็บไซต์โฮสติ้งไฟล์ฟรีที่ฉันเพิ่งค้นพบโดยการค้นหาโดย Google)

หากคุณไม่เชื่อใจฉัน (ซึ่งใช้ได้ดี) หรือไฟล์ถูกลบคุณสามารถรวบรวมรหัสด้วยตัวเองได้แน่นอน คุณต้องเพิ่ม "PowrProf.lib" ในการพึ่งพาเพิ่มเติมของ Linker

#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ดูเหมือนว่าจะทำสิ่งเดียวกัน แต่อย่างใดโปรแกรมข้างต้นไม่ได้ทำให้คอมพิวเตอร์เข้าสู่โหมดไฮเบอร์เนต ฉันสามารถปลุกพีซีได้ทันที (ไม่มีข้อความแจ้งเตือนเมนบอร์ด) โดยกดปุ่มใด ๆ บนแป้นพิมพ์


2

คุณสามารถเริ่มต้นการระงับหรือจำศีลตัวเลือกจากบรรทัดคำสั่งตามที่ระบุไว้ด้านล่างและอ้างอิงในบทความนี้

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

หากคอมพิวเตอร์ของคุณถูกตั้งค่าให้อนุญาตการไฮเบอร์เนตคำสั่งด้านบนจะเริ่มต้นการไฮเบอร์เนต หากคุณสมบัติการจำศีลถูกปิดใช้งานคุณสมบัตินั้นจะเข้าสู่สถานะพร้อมใช้งาน ตามที่ผู้ใช้รายอื่นได้ตอบไปก่อนหน้านี้shutdown.exe /?จะมีตัวเลือกการปิดเครื่องมากมาย


1
rundll32ไม่ควรใช้โทรSetSuspendStateเพราะลายเซ็นไม่ตรงกับที่คาดrundll32ไว้ โปรดดู: support.microsoft.com/en-us/kb/164787และmsdn.microsoft.com/en-us/library/windows/desktop/พารามิเตอร์ตัวแรกได้รับขยะแทนที่จะเป็น FALSE ดังนั้นจึงจำศีลแทนการไปที่ นอน.
SergeyT

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

@SergeyT ดูเหมือนว่าจะทำงานให้ฉัน (หลังจากปิดการใช้งานการไฮเบอร์เนต); คุณกำลังบอกว่าหน้าต่างนี้จะเสียหายหรือไม่
moondra

มันทำลายสแต็ก (เนื่องจาก rundll32 คาดว่าจะมีลายเซ็นการโทรที่แตกต่างกันดังนั้นจึงปรากฏสิ่งต่าง ๆ ออกจากสแต็กที่ไม่ได้ใส่จริง สิ่งนี้นำไปสู่พฤติกรรมที่ไม่คาดคิด
imoatama

@imoatama การค้นหาที่ดี ...
masterxilo

1

นี่คือบทความเกี่ยวกับการใช้ CLI เพื่อปิด

Microsoft ให้ PsTools ซึ่งให้การปิด CLI พร้อมเครื่องมือที่มีประโยชน์อื่น ๆ คุณจะได้รับที่นี่


1

เพียงSLEEPER QUICKทำงานสำหรับฉัน (ทำงานใน Windows 7,8,10)

รหัสที่มา PS ใช้ได้ที่นี่


1
มีโอกาสใดบ้างที่คุณจะสามารถให้ลิงค์ไปยังเว็บไซต์จริงที่คุณได้รับไฟล์มา การเชื่อมโยงโดยตรงไปยังไฟล์ดาวน์โหลดโดยเฉพาะเมื่อใช้ตัวย่อ URL ga สามารถทำให้ไฟล์ดูน่าสงสัยเป็นพิเศษเพราะเป็นกลยุทธ์ที่นักเขียนมัลแวร์มักใช้
Mokubai

ตกลงฉันได้ปรับปรุงลิงค์ไปยังเว็บไซต์อย่างเป็นทางการ
T.Todua

1

หากคุณมี Python (ที่มี pywin32) คุณสามารถเรียกใช้ฟังก์ชัน SetSuspendState โดยตรงได้ที่:

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

สามารถใส่ลงในไฟล์แบทช์หรือ sorta ทางลัดได้อย่างง่ายดายเช่น:

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();"
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.