Windows 7에서 배치 파일을 통해 컴퓨터 잠자기


14

일정 시간이 지나면 컴퓨터를 절전 모드로 만드는 배치 파일을 만들고 싶습니다.

내가 찾은 가장 가까운 것은 대기 모드에 있지만 키보드의 절전 버튼과 다르게 작동하는 것 같습니다 (더 긴 부팅은 마우스 클릭으로 깨어나지 않습니다). 어떤 아이디어? 파이썬이나 C #에서 더 쉬울까요?

위에서 언급 한 덜 이상적인 기술은 cmd 프롬프트에서 이것을 호출하는 것입니다.

Rundll32.exe powrprof.dll,SetSuspendState

.bat에 카운트 다운 부분을 추가하고 그 후에 이것을 실행하십시오.
Apache


최대 절전 모드는 완전히 다릅니다. 그렇지만 올바른 해결책입니다.
Apache

rundll이 최대 절전 모드와 동일하다고 생각합니다. 절전 모드에서는 마우스를 클릭하면 로그인 화면이 몇 초 안에 있습니다. 최대 절전 모드에서는 BIOS, 하드 드라이브를 다시 확인하고 저장된 상태를 하드 드라이브에서 램으로 전송 한 다음 창을 부팅해야합니다. 절전 모드의 유일한 단점은 전원이 끊기고 램에 저장된 저장된 상태가 손실되는 것입니다 (구형 PC는 실제로 PSU 및 팬과 같이 더 많은 구성 요소를 남겨 둡니다).
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 분 후에 배치가 휴면 명령을 실행합니다.

선택적으로 카운트 다운 취소를 방지 할 수 있습니다 (배치 창에서 아무 키나 누르면).

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

마우스로 깨우는 방법에 대한 작은 하우투 :

로 이동 : 시작 -> 제어판 -> 마우스.

대체 텍스트

마우스 속성 창에서 하드웨어 탭을 클릭하고 장치 목록에서 마우스를 선택하십시오. 일반적으로 여기에 하나의 마우스 만 나열되지만 컴퓨터에 연결된 하드웨어에 따라 다릅니다. 목록에서 마우스를 선택했으면 속성 버튼을 클릭하십시오 .

대체 텍스트

이제 마우스 의 속성 창 에서 일반 탭의 설정 변경 버튼을 클릭 하십시오.

대체 텍스트

열린 창에서 전원 관리 탭을 클릭 하고이 장치가 컴퓨터를 깨우도록 허용 옵션을 선택하십시오 . 클릭 OK의 이 창에 버튼을하고 클릭 OK 온 버튼을 마우스 등록 열려있는 창. 이제 마우스 버튼을 클릭하거나 마우스를 움직여 Windows 7을 절전 모드에서 깨울 수 있습니다.

대체 텍스트


3
와우 남자, 당신은 질문에 대답하는 것을 정말로 좋아합니다 :)
Omu


2

작업 솔루션! 적절한 수면을 허용
하기 위해 PsShutdown유틸리티 를 사용해야했습니다 (1 차 문제는 SetSuspendState웨이크 타이머가 기계를 깨울 수 없다는 것입니다). 잠자기 할 배치 파일은 1 줄입니다.

PsShutdown -d -t 2

소프트웨어 권장 방법에 대한 팁은 소프트웨어 권장 방법을 참조하십시오 . 최소한 링크, 소프트웨어 자체에 대한 추가 정보 및 문제의 문제를 해결하는 데 사용할 수있는 방법을 제공해야합니다.
DavidPostill

1
이것은 내 PC에서 작동하지 않았다 ...
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네임 스페이스 (는 파워 쉘 ISE에서 수행) 기본적으로로드되지 않습니다, 당신은 처음에는 그것을 위해 어셈블리를로드해야합니다.

원래 답변


0

Hiberanate를 비활성화하지 않도록 SetSystemPowerState를 시도 할 수 있습니다.

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)은 NOTHING을 의미합니다.

powrprof.dll, SetSuspendState는 rundll32 스타일 인수를 구문 분석하지 않으므로 무시합니다. 따라서 최대 절전 모드를 비활성화해야합니다.


1
이것은 Vista 이상이 아닌 Windows XP에 유용합니다.
Rodney

1
DLL이 rundll32의 인수를 허용하도록 설계되지 않았기 때문에 rundll32는 사용자가 제공 한 인수를 무시하므로 SetSuspendState는 항상 최대 절전 모드를 유지합니다.
Rodney

-1 : 이것은 완전히 틀 렸습니다. OP의 원하는 운영 체제에서는 작동하지 않습니다.
nc4pk

rundll32는 인수를 전달하지 않으므로 작동하도록 Hibernate를 비활성화 해야하는 이유는 무엇입니까? 기본 args는 항상 최대 절전 모드를 설정하지만 최대 절전 모드를 사용하지 않으면 DLL API는 기본적으로 절전 모드로 설정됩니다.
Rodney


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.