Windows10でもタスクスケジューラーでスリープ & 解除の設定をする
基本的には、下記のサイトのバッチをつかわせていただいていたのですが、
スリープからの復旧がどうしてもできなかった。
http://izmiz.hateblo.jp/entry/2015/02/18/214646
ので、下記のsuspend.exeでの運用に変更しています。
(ちなみに、hibernate.exeだと復旧はできなかった)
https://tipszone.jp/20110517_stop-pc/
■ 想定環境
・イベント時間: 17:00 ~ 24:00それ以外は眠らせたい。
・PC
- Windows10 Professional 64bit
- アカウントのパスワードは「無し」に
・作るバッチ
1. イベント用アプリケーションをexitして、眠らせる
2. 起こして、PC再起動
3. PC起動時にイベント用アプリケーションを立ち上げる
■ 手順
1. バッチ作成2. タスクマネージャーに各種バッチを登録
3. 電源周りの設定を変更
■ バッチ作成
1. イベント用アプリケーションをexitして、眠らせる
rem rem goToSleep.bat rem echo "kill all apps and go to Hibernation" taskkill /im "eventApp.exe" /f timeout /T 10 cd "C:\bat" start suspend.exe
2. 起こして、PC再起動
rem rem wakeFromSleepAndReboot.bat rem echo "wake from sleep and reboot" timeout /T 20 shutdown -r -t 10
3. PC起動時にイベント用アプリケーションを立ち上げる
rem rem launchApps.bat rem echo "launch apps" cd "C:\bat\" start eventApp.exe exit
4. スリープ用のスクリプトファイルをexeに変換
require 'Win32API' # http://msdn.microsoft.com/en-us/library/aa373201(v=vs.85).aspx setSuspendState = Win32API.new('powrprof.dll', 'SetSuspendState', %w(i i i), 'i') setSuspendState.call(0, 0, 0)
※ こちらはexeが下記にあるので、そちらを使いました。
suspend.exe
■ タスクマネージャーに各種バッチを登録
スタートアップのバッチは、
「スタートアップ時」ではなく「任意のユーザーのログオン時」にしといたほうが良さそうでした。
詳細はこちらを参照
http://izmiz.hateblo.jp/entry/2015/02/18/214646
■ 電源周りの設定を変更
- ハイブリッドスリープ -> オン
- スリープ解除タイマーの許可 -> 有効
ファイヤーウォールを無効に
ついでに、win10では自動でスリープ解除される現象があるようで、
調べていくと下記の自動メンテナンスが原因っぽかったので、こちらも停止。
http://diy-ilands.com/2015/08/05/windows-10-sleep-mode/