指定した時間帯に動く(or 動かない)bat
バッチで時間指定して実行する方法を探していたらこちらの方が見事に実装されていました。
http://homepage1.nifty.com/jak/batch/time.html
指定した時間内のみ動作するバッチの実装例だったので、
せっかくなので時間外のみ動作する逆バージョンも。
時間は朝の9時から夕方の18時にしています。
in_time.bat (指定した時間内のみ動作する)
@ECHO OFF REM 処理可能開始時間 SET START=0900 REM 処理可能終了時間 SET END=1800 REM 現在の時間を取得(数字が1桁の場合は'0'埋め) SET NOW=%TIME: =0% SET NOWSTR=%NOW:~0,2%%NOW:~3,2% SET CONSOLE_NOWSTR=%NOW:~0,2%時%NOW:~3,2%分 REM (現時間 < 処理可能開始時間)ならエラー IF 1%NOWSTR% LSS 1%START% ( GOTO ERR ) REM (処理可能開始時間 < 現時間)ならエラー IF 1%END% LSS 1%NOWSTR% ( GOTO ERR ) ECHO この時間はBAT処理OKです。 GOTO END :ERR ECHO 現在の時刻は【%CONSOLE_NOWSTR%】です。このBATは時間外です。 :END PAUSE;
out_time.bat (指定した時間外のみ動作する)
@ECHO OFF REM 処理禁止開始時間 SET START=0900 REM 処理禁止終了時間 SET END=1800 REM 現在の時間を取得(数字が1桁の場合は'0'埋め) SET NOW=%TIME: =0% SET NOWSTR=%NOW:~0,2%%NOW:~3,2% SET CONSOLE_NOWSTR=%NOW:~0,2%時%NOW:~3,2%分 REM (現時間 < 処理可能開始時間)ならOK IF 1%NOWSTR% LSS 1%START% ( GOTO OK ) REM (処理可能開始時間 < 現時間)ならOK IF 1%END% LSS 1%NOWSTR% ( GOTO OK ) ECHO 現在の時刻は【%CONSOLE_NOWSTR%】です。このBATは時間外です。 ECHO. GOTO END :OK ECHO この時間はBAT処理OKです。 :END PAUSE;
バッチでも色々できるんやなーって改めて勉強になりました。
バッチもん研究所 blogさんありがとうございました。