web-dev-qa-db-ja.com

.batファイルを使用して、予期せず起動したときにコンピューターを再びスリープ状態にするにはどうすればよいですか?

https://c1.staticflickr.com/1/623/22056481124_6cb41164ee_b.jpg
ウェイク履歴カウント-1
航跡履歴[0]
ウェイクソースカウント-1
ウェイクソース[0]

https://c1.staticflickr.com/1/763/21680581753_ce45aa17a1_b.jpg
ウェイク履歴カウント-1
航跡履歴[0]
ウェイクソースカウント-0
(ウェイクソースは表示されません)

キーを押してコンピューターをスリープモードから復帰させると、スクリーンショット1に示すような結果になります。
コンピューターが予期せずウェイクアップした場合、結果はスクリーンショット2に示すものになります。
さまざまな方法を試しましたが、実際にはコンピューターが予期せず起動するのを防ぐ方法はありません。
先月Windows7をWindows10にアップグレードするまで問題は発生しなかったので、ハードウェアの変更が行われていないコンピューターではなく、Windows10に問題があると思います。
イベントビューアでは、予期せず起動したときに発生するイベントは、正常に起動したときに発生するイベントとまったく同じです(つまり、手動で起動します)。
電源設定の[条件]で、タスクを実行するためにコンピューターをスリープ解除することが無効になっています。
タスクスケジューラを使用すると、予期しないか正常かを問わず、コンピュータが起動するたびに.batファイルを自動的に実行できます。
予期せず起動したときにコンピューターが自動的に再びスリープ状態になるように、ファイルで使用できるコマンドは何ですか?

3
Matthew Wai

これを試して:

powercfg -lastwake | findstr /I /C:"Type:"
if %errorlevel% == 0 (
    echo woken up by something
) else (
    echo woken up unexpectedly
)

つまり、Type:の出力でpowercfg -lastwakeを検索し、それが存在しない場合は、マシンが予期せず起動したと見なします。

実際にマシンをスリープ状態に戻したい場合は、2番目のechoを次のように置き換えます。

powercfg -h off
rundll32.exe powrprof.dll,SetSuspendState 0,1,0
powercfg -h on

コンピューターは、スリープ解除、このスクリプトの実行、スリープ状態への復帰、スリープ解除、このスクリプトの実行、スリープ状態への復帰などのループに入る可能性があることに注意してください。

1
Richard