定時シャットダウン

サーバーを決まった時間にシャットダウンさせる必要があったので,シャットダウンスケジュールを登録するバッチファイルを作成した。

スケジュール登録

シャットダウンコマンドを決まった時間に入力させるためのスケジュールを登録するバッチファイルで,スタートアップに入れて置けばサーバー起動時にSC登録可否を当日の運用状況により判断できる。シャットダウン時間(例:17時20分)は,18行目に5分前の時刻を指定する。(例:17:15)

@rem 定時シャットダウンスケジュール登録
@ECHO OFF
ECHO +---------------------------------------------+
ECHO 本日のシャットダウンスケジュールを登録します。
ECHO +---------------------------------------------+
@rem timeout /t 10 /nobreak
:INPUT_CONF
ECHO +-----------------------------+
ECHO 本日は17時20分に終了しますか。
ECHO  ( Y / N )
ECHO +-----------------------------+
SET CONF_SELECT=
SET /P CONF_SELECT=

IF "%CONF_SELECT%"==SET CONF_SELECT=Y
IF /I NOT "%CONF_SELECT%"=="Y" GOTO :INPUT_END

schtasks /create /tn shutdown-once /tr "c:\users\admin\shutdown-sc\5m-down.bat" /sc once /st 17:15 /f
REM schtasks /create /tn shutdown-once /tr "shutdown /s /f /t 300 /d p:0:0" /sc once /st 17:15 /f

ECHO +-------------------------------+
ECHO 17時20分にシャットダウンします。
ECHO +-------------------------------+
PAUSE
EXIT

:INPUT_END
schtasks /delete /tn shutdown-once /f
ECHO +-------------------------------------------------+
ECHO シャットダウンスケジュールは登録されませんでした。
ECHO +-------------------------------------------------+
PAUSE
EXIT

シャットダウン

shutdownコマンド入力バッチファイル
  ファイル名:5m-down.bat  (保存場所例:c:\users\admin\shutdown-sc\)
上記のスケジュールからシャットダウン5分前に起動させるバッチファイルで,停止5分前警告と2分前警告が表示されて,アプリケーションを強制終了してシャットダウンする。上記SCバッチファイルの18行目に保存場所・ファイル名を指定する。
例:”c:\users\admin\shutdown-sc\5m-down.bat” に変えて直接下記コマンドを指定してもOK

@rem 300秒(5分)後シャットダウン
shutdown /s /f /t 300 /d p:0:0

 

拡張版

シャットダウン時間指定可能  別途batファイル不要

@rem 定時シャットダウンスケジュール登録  start_shutdown.bat
@ECHO OFF
ECHO +---------------------------------------------+
ECHO 本日のシャットダウンスケジュールを登録します。
ECHO +---------------------------------------------+
@rem timeout /t 10 /nobreak
:INPUT_CONF
ECHO +-----------------------------+
ECHO 本日は17時20分に終了しますか。
ECHO  ( Y / N )
ECHO +-----------------------------+
SET CONF_SELECT=
SET /P CONF_SELECT=

IF "%CONF_SELECT%"==SET CONF_SELECT=Y
IF /I NOT "%CONF_SELECT%"=="Y" GOTO :INPUT_PM

schtasks /create /tn shutdown-once /tr "shutdown /s /f /t 300 /d p:0:0" /sc once /st 17:15 /f

ECHO +-------------------------------+
ECHO 17時20分にシャットダウンします。
ECHO +-------------------------------+
timeout /t 5 /nobreak
@rem PAUSE
EXIT


:INPUT_PM
ECHO +-----------------------------+
ECHO 本日は12時00分に終了しますか。
ECHO  ( Y / N )
ECHO +-----------------------------+
SET CONF_SELECT=
SET /P CONF_SELECT=

IF "%CONF_SELECT%"==SET CONF_SELECT=Y
IF /I NOT "%CONF_SELECT%"=="Y" GOTO :INPUT_HHMM

schtasks /create /tn shutdown-once /tr "shutdown /s /f /t 300 /d p:0:0" /sc once /st 11:55 /f

ECHO +-------------------------------+
ECHO 12時00分にシャットダウンします。
ECHO +-------------------------------+
timeout /t 5 /nobreak
@rem PAUSE
EXIT


:INPUT_HHMM
ECHO +--------------------------------------+
ECHO シャットダウン時間(-5分)を入力しますか。
ECHO   (HH:MM / N )
ECHO +--------------------------------------+
SET CONF_SELECT=
SET /P CONF_SELECT=

IF "%CONF_SELECT%"==SET CONF_SELECT=N
IF /I NOT "%CONF_SELECT%"=="N" GOTO :INPUT_CUSTM

schtasks /delete /tn shutdown-once /f
ECHO +-------------------------------------------------+
ECHO シャットダウンスケジュールは登録されませんでした。
ECHO +-------------------------------------------------+
timeout /t 5 /nobreak
@rem PAUSE
EXIT

:INPUT_CUSTM
schtasks /create /tn shutdown-once /tr "shutdown /s /f /t 300 /d p:0:0" /sc once /st %CONF_SELECT% /f
ECHO +-------------------------------+
ECHO %CONF_SELECT% +5分にシャットダウンします。
ECHO +-------------------------------+
timeout /t 5 /nobreak
@rem PAUSE
EXIT