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


13

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

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

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

Rundll32.exe powrprof.dll,SetSuspendState

カウントダウン部分を.batに追加し、その後これを実行するだけです。
アパッチ


休止状態は完全に違いますが、ええ、それは私が推測する正しい解決策です。
Apache

rundllのことは休止状態と同じだと思います。スリープ状態で、マウスをクリックすると、数秒でログイン画面が表示されます...休止状態では、BIOS、ハードドライブを再確認し、保存した状態をハードドライブからRAMに転送してから、ウィンドウを起動する必要があります。スリープの唯一の欠点は、電源を失い、RAMに保存された保存状態が失われることです(実際、古いPCはPSUやファンなどのコンポーネントをより多く残します)。
セビン

回答:


25

単にコマンド

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は、 sleepコマンドを実行します20分のバッチ後の平均秒、です。

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

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

マウスでの目覚めに関するリトルHOWTO:

[スタート]-> [コントロールパネル]-> [マウス]に移動します

代替テキスト

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

代替テキスト

今では、プロパティあなたのマウス用の窓、をクリックして設定の変更のボタン全般 ]タブをクリックします。

代替テキスト

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

代替テキスト


3
うわー、あなたは本当に質問に答えるのが好きです:)
オム


2

実用的なソリューション!
私が使用していたPsShutdown(主な問題は、適切な睡眠を可能にするユーティリティを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名前空間が(それは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
これは、Vista以降ではなく、Windows XPで役立ちます。
ロドニー

1
DLLはrundll32からの引数を受け入れるように設計されていないため、rundll32は指定した引数を無視することに注意してください(そのためSetSuspendStateが常に休止状態になる理由)。
ロドニー

-1:これはまったく間違っています。OPの目的のオペレーティングシステムでは機能しません。
nc4pk

rundll32は引数を渡さないため、Hibernateを無効にして動作させる必要があります。デフォルトの引数では、常に休止状態になりますが、休止状態が無効になっている場合、DLL APIはデフォルトでスリープ状態になります。
ロドニー

0

この質問はすでに回答済みです。

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

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

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


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.