Windowsで繰り返し行う作業を自動化したいとき、バッチファイルは非常に便利です。さらに、タスクスケジューラを使うことで、毎日決められた時間に自動的にバッチファイルを実行させることもできます。
この記事では、Windowsタスクスケジューラを使用してバッチファイルを定期的に実行する方法と注意点を紹介します。
タスクスケジューラとは?
Windowsタスクスケジューラは、プログラムやバッチファイルを予定された時間や特定のイベントが発生したときに自動的に実行するための機能です。この機能を利用して、バッチファイルを定期的に実行させることができます。
バッチファイルの準備
まずは、システムに影響を与えないバッチファイルで試すことをお勧めします。以下のバッチファイルを実行することにしましょう。
@echo off
rem カレントディレクトリを表示する
echo %CD%
pause
この記事では、上記のバッチファイルを D:\sample.bat に保存して、バッチファイルを自動実行する手順を説明します。(Dドライブが無い環境の場合は、Cドライブとしても問題ありません)
バッチファイルの実行をスケジュールする手順
1. タスクスケジューラを開く
スタートメニューから「タスクスケジューラ」を検索して開きます。

2. 新しいタスクを作成
左側パネルの「タスクスケジューラライブラリ」を選択して、右側のパネルから「タスクの作成」を選択します。

3. タスクの基本情報を設定
「全般」タブで、タスクに名前を付けます。説明も書いておくと、後で見たときに、タスクの役割が分かりやすくなります。

必要に応じて、セキュリティオプションを設定します。
4. トリガーを設定
「トリガー」タブを開き、「新規」をクリックします。

新しいトリガー画面で、どのようにバッチファイルを実行するのかを設定します。
「開始する日時」で、タスクを開始したい日時を設定します。たとえば、毎日21時にバッチファイルを実行したい場合は、以下のようにします。

「OK」をクリックしてトリガーを保存します。

5. アクションを設定
「操作」タブを開き、「新規」をクリックします。

「アクション」を「プログラムの開始」、「プログラム/スクリプト」の欄に、実行したいバッチファイルのパスを入力します。

「OK」をクリックしてアクションを保存します。

6. 設定を保存
すべての設定を確認した後、タスクの作成ウィンドウで「OK」をクリックしてタスクを保存します。

正しく保存できると、以下のように今回追加したタスクがリストに表示されます。

動作確認
追加したタスクを右クリックして「実行する」をクリックすることで、予定している時間を待つことなく、即時にタスクの実行を試すことができます。ここで期待通りに動作しない場合は、設定やバッチファイルの記述を確認することになります。

実行した結果、以下のように画面表示されたら成功です。

ここで注目すべきは、タスクスケジューラからバッチファイルを実行すると、カレントディレクトリは C:\WINDOWS\system32 になる、という点です。タスクスケジューラから実行するバッチファイルを記述する際は、まず最初にカレントディレクトリを移動するよう気を付けてください。
たとえば、D:\Sample ディレクトリで作業をしたい場合、以下のように記述します。
@echo off
rem ドライブを移動
D:
rem ディレクトリを移動
cd Sample
rem カレントディレクトリを表示する
echo %CD%
pause
実行結果

上記の実行結果から、正しくドライブとディレクトリの移動が出来ていることが確認できました。
注意点
- すぐ上にも書きましたが、バッチファイル実行直後のカレントディレクトリはC:\WINDOWS\system32です。具体的な処理を記述する前に、cdコマンドを使用してパスの移動をしてください。
- 実行したいバッチファイルのパスにスペースが含まれている場合は、タスクスケジューラに登録する際に、パス全体をダブルクォートで囲む必要があります。
- タスクを実行するユーザーアカウントには、バッチファイルを実行するための権限が必要です。
まとめ
タスクスケジューラを使用することで、毎日決められた時間にバッチファイルを自動実行させることができます。この機能を有効に使い、日々の作業の自動化を進めましょう。