ディスクのチェックや不要ファイルの削除など、任意のプログラムを定期的に実行したいニーズは常にあると思います。
Windows XP以降には、タスクスケジューラと呼ばれるアプリケーションがあり、それを利用することでこのニーズを満たすことができます。
しかし、タスクスケジューラがないWindows 2000環境や、ユーザが管理権限を持たないOA環境など、タスクスケジューラを利用できないケースはそれなりに存在します。
このページでは、バッチファイルだけで定期的に任意のプログラムを実行する方法について説明します。
まず、「前回の起動からN日以上間隔が空いていたらプログラムを実行する」というバッチファイルを作成します。
以下がバッチファイルの例です。
@echo off cls rem ---------------------------------------------------------------- set /a duration=14 set previous_date_file=C:\TOOL\task_scheduler.txt rem ---------------------------------------------------------------- set current_date=%date:~-10,10% if exist %previous_date_file% ( set /p previous_date=<%previous_date_file% ) else ( set previous_date=2000/01/01 ) call :get_count %current_date% set current_count=%errorlevel% call :get_count %previous_date% set previous_count=%errorlevel% set /a limit_count="%previous_count%+%duration%" if "%limit_count%" leq "%current_count%" ( call scheduled_task.bat echo %current_date%>%previous_date_file% ) goto :EOF :get_count set yyyymmdd=%1 set /a yy=%yyyymmdd:~-10,4%-2000 set mm=%yyyymmdd:~-5,2% set dd=%yyyymmdd:~-2,2% set /a leap=yy%%4 set offset=0 if %leap%==0 set offset=1 set /a count=(yy*365)+(yy/4)+dd if "%mm%"=="02" set /a count=count+31 if "%mm%"=="03" set /a count=count+31+28+offset if "%mm%"=="04" set /a count=count+31+28+offset+31 if "%mm%"=="05" set /a count=count+31+28+offset+31+30 if "%mm%"=="06" set /a count=count+31+28+offset+31+30+31 if "%mm%"=="07" set /a count=count+31+28+offset+31+30+31+30 if "%mm%"=="08" set /a count=count+31+28+offset+31+30+31+30+31 if "%mm%"=="09" set /a count=count+31+28+offset+31+30+31+30+31+31 if "%mm%"=="10" set /a count=count+31+28+offset+31+30+31+30+31+31+30 if "%mm%"=="11" set /a count=count+31+28+offset+31+30+31+30+31+31+30+31 if "%mm%"=="12" set /a count=count+31+28+offset+31+30+31+30+31+31+30+31+30 exit /b %count%
やっていることを簡単に説明すると、以下の通りです。
どうです、簡単でしょう?
肝はdateの整形、「set /a」を使った演算結果の格納、「set /p」を使ったファイル内の値の格納ぐらいでしょうか?
定期的に実行したいプログラムの内容は別ファイル「scheduled_task.cmd」中に記入してください。
あとは、上記で作成したバッチファイルを定期的に実行させるだけです。
バッチファイルを定期的に実行させるのには、スタートアップを利用します。
スタートアップは、PCが起動される際に実行するプログラムを格納しておくためのフォルダで、「スタート」→「プログラム」→「スタートアップ」を右クリックして「開く」を選択すること開くことが出来ます。
このフォルダに、先ほど作成したバッチファイルへのショートカットを格納してください。
これでPCを起動する度に上記のバッチファイルが実行され、バッチファイル内の環境変数「duration」で設定された日数間隔で「scheduled_task.bat」が実行されます。
・頂いたメッセージは管理者のチェックの後、公開されます。
・メッセージの公開を希望されない場合には、「このメッセージを非公開にする」にチェックを入れてください。
・管理者が不適切と判断したメッセージは公開しませんので、予めご了承ください。
まだ評価がありません |
表示できるメッセージはありません。