web-dev-qa-db-ja.com

Windows 7でバッチファイルを介してコンピューターをスリープ状態にする

一定期間コンピュータをスリープさせるバッチファイルを作成したい。

私が見つけた最も近いものは、それをスタンバイ状態にすることですが、キーボードのスリープボタンとは動作が異なるようです(起動時間が長くなり、マウスクリックで起動しません)。何か案は? PythonまたはC#のほうが簡単でしょうか?

上記の理想的ではない手法は、cmdプロンプトでこれを呼び出すことです。

Rundll32.exe powrprof.dll,SetSuspendState
14
Saebin

単に命令する

rundll32.exe powrprof.dll,SetSuspendState

システムhibernateを実行しますが、次のように記述した場合:

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

そしてターンオフコマンドでの休止:

powercfg -hibernate off

これで、システムがスリープ状態になり、デバイスを選択すると、マウスを動かすと起動します(方法を確認するには、下にスクロールしてください)。

タイマーをバッチ処理する:

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

ここで12は秒です。つまり、20分後にバッチがスリープコマンドを実行します。

オプションで、カウントダウンのキャンセルを防ぐことができます(バッチウィンドウで任意のキーを押した場合)。

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

マウスで目を覚ますことについての小さなHOWTO:

移動先:スタート->コントロールパネル->マウス。

alt text

マウスプロパティウィンドウでハードウェアタブをクリックし、デバイスのリストからマウスを選択します。通常、ここに表示されるマウスは1つだけですが、それはコンピュータに接続しているハードウェアによって異なります。リストからマウスを選択したら、プロパティボタンをクリックします。

alt text

マウスのPropertiesウィンドウで、GeneralタブのChange Settingsボタンをクリックします。

alt text

開いたウィンドウで、電源管理タブをクリックし、このデバイスにコンピュータの起動を許可するというタイトルのオプションをオンにします。このウィンドウで[〜#〜] ok [〜#〜]ボタンをクリックし、[〜#〜] ok [〜#〜]ボタンをクリックしますマウスのプロパティまだ開いているウィンドウ。これからは、マウスボタンをクリックするか、マウスを動かして、Windows 7をスリープモードから復帰させることができます。

alt text

26
Anotomix

ワーキングソリューション!
適切なスリープを可能にするためにPsShutdownユーティリティを使用する必要がありました(主な問題はSetSuspendStateではウェイクタイマーがマシンをウェイクアップできないことです)。スリープするバッチファイルは1行です。

PsShutdown -d -t 2
2
P Pace
shutdown /h

コンピュータを休止状態にします(ただし、サスペンドについては不明です)。

2
Stacey Richards

.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(他の回答が機能する方法)。 Documentation SetSuspendStateの場合。

なので System.Windows.Forms名前空間はデフォルトではロードされません(Powershell ISEではロードされます)。最初にそのためにアセンブリをロードする必要があります。

元の回答

1
Velda

バッチファイルを作成し、次の行を挿入するだけです。

7200 = 2 hours

@echo off
timeout /t 7200 /nobreak
powercfg -h off
rundll32.exe powrprof.dll,SetSuspendState 0,1,0
powercfg -h on
0
Chris Fischer

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)は何も意味しないことに注意してください。

Powrprof.dll、SetSuspendStateはrundll32スタイルの引数を解析しないため、無視されます。そのため、休止状態を無効にする必要があります。

0
Rodney

この質問はすでに回答されています。

powercfg -h off&start/min "" C:\ WINDOWS\System32\rundll32.exe PowrProf.dll、SetSuspendState 0,1,0&ping -n 3 127.0.0.1> nul&powercfg -h on&exit

以下を参照してください。

コンピューターをスリープ(休止状態ではない)にするために使用するコマンドは何ですか?

0
Josh