一定期間コンピュータをスリープさせるバッチファイルを作成したい。
私が見つけた最も近いものは、それをスタンバイ状態にすることですが、キーボードのスリープボタンとは動作が異なるようです(起動時間が長くなり、マウスクリックで起動しません)。何か案は? PythonまたはC#のほうが簡単でしょうか?
上記の理想的ではない手法は、cmdプロンプトでこれを呼び出すことです。
Rundll32.exe powrprof.dll,SetSuspendState
単に命令する
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:
移動先:スタート->コントロールパネル->マウス。
マウスプロパティウィンドウでハードウェアタブをクリックし、デバイスのリストからマウスを選択します。通常、ここに表示されるマウスは1つだけですが、それはコンピュータに接続しているハードウェアによって異なります。リストからマウスを選択したら、プロパティボタンをクリックします。
マウスのPropertiesウィンドウで、GeneralタブのChange Settingsボタンをクリックします。
開いたウィンドウで、電源管理タブをクリックし、このデバイスにコンピュータの起動を許可するというタイトルのオプションをオンにします。このウィンドウで[〜#〜] ok [〜#〜]ボタンをクリックし、[〜#〜] ok [〜#〜]ボタンをクリックしますマウスのプロパティまだ開いているウィンドウ。これからは、マウスボタンをクリックするか、マウスを動かして、Windows 7をスリープモードから復帰させることができます。
ワーキングソリューション!
適切なスリープを可能にするためにPsShutdown
ユーティリティを使用する必要がありました(主な問題はSetSuspendState
ではウェイクタイマーがマシンをウェイクアップできないことです)。スリープするバッチファイルは1行です。
PsShutdown -d -t 2
shutdown /h
コンピュータを休止状態にします(ただし、サスペンドについては不明です)。
.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ではロードされます)。最初にそのためにアセンブリをロードする必要があります。
バッチファイルを作成し、次の行を挿入するだけです。
7200 = 2 hours
@echo off
timeout /t 7200 /nobreak
powercfg -h off
rundll32.exe powrprof.dll,SetSuspendState 0,1,0
powercfg -h on
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スタイルの引数を解析しないため、無視されます。そのため、休止状態を無効にする必要があります。
この質問はすでに回答されています。
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
以下を参照してください。