タスクスケジューラは決まった時間にプログラムなどを実行することが可能な機能です。
そのタスクスケジューラを使って毎日決まった時間にバッチファイルを実行してみました。
今回は毎日 08:00 にテキストファイルに aaa という文字列を追記するという設定を入れます。
また、ユーザがログインしていなくても自動的に実行されるような設定もしていきます。
バッチファイルの準備
まず、以下の内容を記載したバッチファイルを用意します。
・test.bat
echo aaa >> test.txt
このバッチファイルと同じフォルダにある「test.txt」に aaa を追記するコマンドです。
※ファイルがなければ新規作成されます。
今回はバッチファイルを「C:\hogehoge」というフォルダに用意します。
C:\hogehoge>dir
C:\hogehoge のディレクトリ
2022/09/15 00:17 <DIR> .
2022/09/15 00:16 20 test.bat
1 個のファイル 20 バイト
1 個のディレクトリ 121,765,572,608 バイトの空き領域
C:\hogehoge>
タスクスケジューラを設定する
タスクスケジューラを設定していきます。
・「Windowsキー」+「R」を押して、「taskschd.msc」と入力し、「OK」をクリックします。
・タスクスケジューラの設定画面が開くので、「タスクスケジューラ(ローカル)」をクリックして「基本タスクの作成…」をクリックします。
・「基本タスクの作成ウィザード」が開くので、「名前」に任意の名前を入力します。
・「トリガー」設定で、どのくらいの頻度で実行するのか選択します。
今回は「毎日」を選択します。
・このタスクの開始日時を選択します。
過去日を設定することで設定した日から実行することが可能です。
今回は [2022/04/01] という明らかに過去の日付を入力しています。
・どんな操作をするかを選択します。
今回はバッチファイルを実行させるので「プログラムの開始」を選択します。
・実行させるプログラムのパスを入力します。
また、「開始(オプション)」の設定で、バッチファイルが存在するパスを入力します。
このオプションを指定しないとバッチファイルは正常に実行されませんので注意してください。
・「完了」画面で [完了] をクリックしたらタスクの作成は完了です。
ユーザがログインしていなくても自動実行されるように設定する
・作成したタスクを選択して「プロパティ」をクリックします。
・「全般」タブで「ユーザーがログオンしているかどうかにかかわらず実行する」を選択します。
上記画面で「OK」クリック後、以下のようにユーザのPW入力を求められるので、入力します。
これでタスクスケジューラの設定は完了です。
毎日 08:00 にテキストファイルに aaa という文字列を追記し、
ユーザがログインしていなくても自動的に実行されます。
実際に実行してみる(手動実行で確認)
まず、タスクスケジューラが正常に動くのかを手動実行で確認してみます。
・タスクを右クリックして「実行する」をクリックして実行させます。
実行後にバッチファイルが存在するフォルダを確認してみると、
「test.txt」が作成され、テキストファイルの中身も [aaa] と記載されていることが確認できました。
これで、タスクスケジューラが実行されるとバッチファイルが正常に実行されることが分かりました。
自動で実行されたことを確認する
さいごに、実際に自動で実行されるのかを確認します。
今回だと設定した時間以降にテキストファイルに追記されていることを確認すればよいですが、タスクスケジューラ上でも「履歴」を見ることで実行されたのかを確認することができます。
ですが、その前に「履歴」はデフォルトでは [無効] になっているので有効化させる必要があります。
・「すべてのタスク履歴を有効にする」をクリックします。
すると以下のように「履歴(無効)」から「履歴」に表示が変わり履歴が表示されるようになります。
この状態で設定した日時以降に履歴を見ると、
タスクスケジューラで設定した時間に実行されていることが確認でき、
実際にテキストファイルを見てみると [aaa] の文字が追記されていることも確認できます。
さいごに
この記事の中ではさらっと書いていますが、開始のオプションにパスを指定する部分が最も苦戦しました。
ですが何とか解決できてよかったです。^^