!! ATコマンドで数分ごとに実行する 久しぶりにバッチファイルなんぞ書いたので、ネタにしてみる。 windowsにはATコマンドで決まった時間にコマンド等を実行することができるけど、時間単位とか数分単位に実行することはできない。(すべて登録してしまえばできるけど現実的じゃない。) バッチファイルだけで、何とかしてみた。 {{more 続きを読む...,1 実行するバッチファイルの中で、実際の処理をした後に、ATコマンドで自分自身を登録し直せばいいってところまでは問題ない。で問題になるのが次の時間の計算。バッチファイルでは計算ができないので、簡単に時間に足すなんてことができないので(よね?)ので激しく力業で次の時間を計算してみた。 @echo off rem 10分ごとに行う処理 :NEXT_AT for /F "delims=: tokens=1,2" %%i in ( "%3" ) do call :NEXTTIME %%i %%j echo 次回は %NEXTTM% です。 at %3 %1\%2 %1 %2 %NEXTTM% goto :EOF :NEXTTIME if "%2"=="00" set MM=10 if "%2"=="10" set MM=20 if "%2"=="20" set MM=30 if "%2"=="30" set MM=40 if "%2"=="40" set MM=50 if "%2"=="50" goto :ADDHH set NEXTTM=%1:%MM% goto :EOF :ADDHH set MM=00 if "%1"=="00" set HH=01 if "%1"=="01" set HH=02 if "%1"=="02" set HH=03 if "%1"=="03" set HH=04 if "%1"=="04" set HH=05 if "%1"=="05" set HH=06 if "%1"=="06" set HH=07 if "%1"=="07" set HH=08 if "%1"=="08" set HH=09 if "%1"=="09" set HH=10 if "%1"=="10" set HH=11 if "%1"=="11" set HH=12 if "%1"=="12" set HH=13 if "%1"=="13" set HH=14 if "%1"=="14" set HH=15 if "%1"=="15" set HH=16 if "%1"=="16" set HH=17 if "%1"=="17" set HH=18 if "%1"=="18" set HH=19 if "%1"=="19" set HH=20 if "%1"=="20" set HH=21 if "%1"=="21" set HH=22 if "%1"=="22" set HH=23 if "%1"=="23" set HH=00 set NEXTTM=%HH%:%MM% goto :EOF このサンプルでは、10分ごとに実行される。 起動方法は c:\temp\xxx.bat c:\temp xxx.bat 10:10 で実行すると、処理を実行後、次の実行時間がスケジュール登録されます。 なお、ATコマンドは実行されるコマンドは別のユーザーなので注意が必要です。 }}