2012/09/16

エンコード終了後に休止状態に入るか選んでから処理するBAT

エンコードに限った話ではないのですが、PCで時間の掛かる処理をBAT処理する事はよくあります。
さらに処理が完了したら自動的に休止状態に移行してくれると気軽に無人稼働出来て便利です。
しかし別作業をしながらバックグラウンドで処理する場合等、毎回休止状態に入られると都合の悪い事もあります。

という訳で始めに休止状態に入るか選択してから処理を行うBATの紹介です。
最近は電気代も高いので夏は外出中、冬は就寝中に100GFLOPSの暖房器具を稼働する事で節電できます。

BATの処理内容

1.BATを実行
2.処理完了後に休止状態に入るか選択(Yes/No)する
3.処理が実行される
4.最初にYを選択した場合は休止状態に移行する

サンプルコード

---------------

rem 休止状態移行BATサンプル by Wirewriggle

@echo off
setlocal ENABLEDELAYEDEXPANSION

rem 最初に処理完了後に休止状態に入るか選択

  rem メッセージ表示

  echo 処理完了後に休止状態に移行しますか? *選択で開始
  
  rem Y/N選択
  choice
  set SLEEPFLG=%errorlevel%

  echo;
  rem 休止状態に移行する場合
  IF "%SLEEPFLG%" == "1" (
  
    rem メッセージ表示
    echo ######処理完了後「休止状態」に移行します######
    
  rem 休止状態に移行しない場合
  ) ELSE (
  
    rem メッセージ表示
    echo #処理完了後も電源状態は維持されます#
  )


rem #########ここに処理内容を記述する#########


rem 休止状態への移行処理


  rem 休止状態に移行する場合
  IF "%SLEEPFLG%" == "1" (
  
    rem メッセージ表示
    echo;
    echo;
    echo ######60秒後に休止状態に移行します#####
    
    rem 60秒待機
    ping localhost -n 60 > nul
    
    rem 休止状態に移行
    %windir%\System32\rundll32.exe powrprof.dll,SetSuspendState

  rem 休止状態に移行しない場合
  ) ELSE (
  
    rem メッセージ表示
    echo #電源状態は維持されます#
  )

endlocal

---------------

メモ

・Windowsの設定で休止状態が有効になっている必要があります。(無効の場合はスタンバイになってしまいます)

関連記事

エンコード関連記事一覧