นอนคอมพิวเตอร์ผ่านไฟล์แบตช์ใน Windows 7


14

ฉันต้องการสร้างไฟล์แบตช์ที่จะทำให้คอมพิวเตอร์ของฉันพักหลังจากผ่านช่วงระยะเวลาหนึ่ง

สิ่งที่ใกล้เคียงที่สุดที่ฉันพบคือวางไว้ในโหมดสแตนด์บาย แต่ดูเหมือนว่าจะทำงานแตกต่างจากปุ่มสลีปบนคีย์บอร์ดของฉัน (การบูตเครื่องนานขึ้นไม่ปลุกเมื่อคลิกเมาส์) ความคิดใด ๆ มันจะง่ายขึ้นใน Python หรือ C # หรือไม่

เทคนิคในอุดมคติน้อยกว่าที่กล่าวมาข้างต้นเรียกสิ่งนี้ใน cmd prompt:

Rundll32.exe powrprof.dll,SetSuspendState

เพียงเพิ่มส่วนการนับถอยหลังลงใน. bat และดำเนินการนี้หลังจากนั้น
Apache

ดูเหมือนซ้ำซ้อนของsuperuser.com/questions/83437/…
akira

การจำศีลแตกต่างอย่างสิ้นเชิง แต่ใช่ว่าเป็นทางออกที่ถูกต้องที่ฉันเดา
Apache

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

คำตอบ:


26

เพียงแค่คำสั่ง

rundll32.exe powrprof.dll,SetSuspendState

ระบบจำศีลแต่ถ้าคุณเขียนสิ่งนี้:

rundll32.exe powrprof.dll,SetSuspendState 0,1,0

และปิดการไฮเบอร์เนตด้วยคำสั่ง:

powercfg -hibernate off

ตอนนี้ระบบของคุณจะหลับไปและจะตื่นขึ้นมาเมื่อเลื่อนเมาส์ถ้าเลือกอุปกรณ์ไว้ (เลื่อนลงเพื่อเรียนรู้วิธี)

ชุดจับเวลา:

timeout /t 1200
rundll32.exe powrprof.dll,SetSuspendState 0,1,0

โดยที่1200คือวินาทีซึ่งหมายความว่าหลังจาก 20 นาทีแบทช์จะเรียกใช้คำสั่ง sleep

คุณสามารถป้องกันการยกเลิกการนับถอยหลัง (ถ้าคุณกดปุ่มใด ๆ ในหน้าต่างแบทช์):

timeout /t 1200 /nobreak
rundll32.exe powrprof.dll,SetSuspendState 0,1,0

HOWTO เล็ก ๆ น้อย ๆ เกี่ยวกับการตื่นขึ้นมาด้วยเมาส์:

ไปที่: เริ่ม -> แผงควบคุม -> เมาส์

ข้อความแสดงแทน

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

ข้อความแสดงแทน

ในหน้าต่างคุณสมบัติสำหรับเมาส์ของคุณให้คลิกที่ปุ่มเปลี่ยนการตั้งค่าบนแท็บทั่วไป

ข้อความแสดงแทน

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

ข้อความแสดงแทน


3
ว้าวคนที่คุณชอบการตอบคำถาม :)
Omu

2
shutdown /h

จะไฮเบอร์เนตคอมพิวเตอร์ (ไม่แน่ใจเกี่ยวกับการระงับชั่วคราว)


2

วิธีการทำงาน!
ฉันต้องใช้PsShutdownยูทิลิตี้เพื่อให้การนอนหลับที่เหมาะสม (ปัญหาหลักคือSetSuspendStateไม่อนุญาตให้ตัวจับเวลาการปลุกเพื่อปลุกเครื่อง) ไฟล์ชุดของฉันที่จะนอนหลับเป็น 1 บรรทัดง่าย ๆ :

PsShutdown -d -t 2

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

1
สิ่งนี้ไม่ทำงานในพีซีของฉัน ...
mrbengi

1

.NET เพื่อช่วยเหลือ วิธีนี้จะทำให้คอมพิวเตอร์เข้าสู่โหมดสลีปโดยไม่จำเป็นต้องเปลี่ยนการกำหนดค่า PC (ปิดการจำศีล) รันคำสั่งนี้เป็นชุด:

powershell.exe -command "Add-Type -AssemblyName System.Windows.Forms; [System.Windows.Forms.Application]::SetSuspendState([System.Windows.Forms.PowerState]::Suspend, $false, $false)"

คุณสามารถใช้::Suspendเพื่อนอนหลับหรือ::Hibernate(ซึ่งเป็นวิธีที่คำตอบอื่น ๆ ทำงาน) เอกสารสำหรับ SetSuspendState

เนื่องจากSystem.Windows.Formsเนมสเปซไม่ได้โหลดตามค่าเริ่มต้น (ใน Powershell ISE) คุณจะต้องโหลดแอสเซมบลีในตอนแรก

คำตอบเดิม


0

คุณอาจลอง SetSystemPowerState เพื่อหลีกเลี่ยงการปิดการใช้งาน Hiberanate

rundll32.exe kernel32.dll, SetSystemPowerState

โปรดทราบว่าการเพิ่ม 1,0 หรือ 1 0 หรือแม้แต่การทำ Rundll32.exe powrprof.dll, SetSuspendState 0 0 1 หรือ Rundll32.exe powrprof.dll, SetSuspendState 0,0,1 ซึ่งหมายความว่าอาร์กิวเมนต์ (0,0,1) หมายถึงไม่มีอะไร

powrprof.dll, SetSuspendState ไม่แยกวิเคราะห์อาร์กิวเมนต์ของลักษณะ rundll32 และจึงละเว้นเหล่านั้น นั่นคือเหตุผลที่คุณต้องปิดใช้งานการไฮเบอร์เนต


1
สิ่งนี้มีประโยชน์สำหรับ Windows XP ไม่ใช่ Vista หรือใหม่กว่า
ร็อดนีย์

1
โปรดทราบว่า rundll32 จะละเว้นอาร์กิวเมนต์ที่คุณให้ (ดังนั้นทำไม SetSuspendState จะจำศีลเสมอ) เนื่องจาก DLL ไม่ได้ออกแบบมาเพื่อยอมรับอาร์กิวเมนต์จาก rundll32
Rodney

-1: นี่ผิดปกติ มันไม่ทำงานภายใต้ระบบปฏิบัติการที่ต้องการของ OP
nc4pk

rundll32 ไม่ผ่านการขัดแย้งดังนั้นทำไมคุณต้องปิดการใช้งานไฮเบอร์เนตเพื่อให้มันทำงาน args เริ่มต้นบอกให้จำศีลเสมอ แต่ถ้า hibernate ถูกปิดใช้งาน DLL API จะเข้าสู่โหมดสลีป
ร็อดนีย์

0

คำถามนี้ได้รับคำตอบแล้ว

powercfg -h ปิด & start / min "" C: \ WINDOWS \ System32 \ rundll32.exe PowrProf.dll, SetSuspendState 0,1,0 & ping -n 3 127.0.0.1> ไม่มี & powercfg -h เมื่อ & ออก

ดูต่อไปนี้:

คำสั่งที่ใช้ในการทำให้คอมพิวเตอร์เข้าสู่โหมดสลีป (ไม่ใช่โหมดไฮเบอร์เนต) คืออะไร


1
หากคุณเชื่อว่าคำถามนี้เป็นคำถามที่ซ้ำกันอย่าลังเลที่จะตั้งค่าสถานะของคำถามนี้
โมเสส

0

เพียงสร้างไฟล์แบตช์และแทรกบรรทัดต่อไปนี้:

7200 = 2 hours

@echo off
timeout /t 7200 /nobreak
powercfg -h off
rundll32.exe powrprof.dll,SetSuspendState 0,1,0
powercfg -h on
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.