Pythonで便利なスクリプトを作ったものの、毎回手動で実行するのが面倒に感じていませんか?
「毎日決まった時間にスクリプトを動かしたい」
「PCを起動したときに自動で実行してほしい」
そんな悩みは、Windowsに標準搭載されている 「BATファイル」 と 「タスクスケジューラ」 を組み合わせることで、無料・追加インストールなしで解決できます。
本記事では、ローカルのWindows環境でPythonプログラムを定期実行するための全手順を、図解・サンプルコード付きでステップ・バイ・ステップに解説します。Pythonとタスクスケジューラが初めての方でも迷わず設定できるよう、トラブルシューティングのポイントも網羅しました。
この記事でできるようになること
- PythonスクリプトをWindowsで定期実行できる
- BATファイルの正しい書き方と注意点が理解できる
- タスクスケジューラへの登録方法が分かる
- よくあるエラーの原因と対処法が分かる
仕組みの全体像
自動化の構成はとてもシンプルです。次の2つのパーツを組み合わせるだけです。
| パーツ | 役割 | 例え |
|---|---|---|
| BATファイル(.bat) | 「Pythonを起動してこのスクリプトを実行して」という命令書 | 楽器の楽譜 |
| タスクスケジューラ | 「毎日〇時にBATファイルを動かして」というスケジュール管理 | 演奏の指揮者 |
全体の流れをまとめると下記のようになります。
- BATファイル(.bat)を作成する
- BATファイルを手動で実行して動作確認する
- タスクスケジューラにBATファイルを登録してスケジュールを設定する
それでは、具体的な手順を見ていきましょう。
事前準備:Pythonのパスを確認する
BATファイルを書く前に、自分のPCにインストールされているPythonのパスを確認しておきましょう。
Pythonのパスの調べ方
- スタートメニューから 「コマンドプロンプト」 を検索して起動する
- 以下のコマンドを入力してEnterキーを押す
where python
実行すると、次のようなパスが表示されます(インストール状況によって異なります)。
C:\Users\YourUsername\AppData\Local\Programs\Python\Python311\python.exe
このパスは後のステップで使うので、コピーしてメモ帳などに控えておいてください。
⚠️ 注意: 複数のPythonバージョンが表示された場合は、使いたいスクリプトに対応するバージョンのパスを選んでください。
ステップ1:定期実行用の「BATファイル」を作成する
BATファイル(バッチファイル)とは、Windowsに対して複数のコマンドを順番に実行させるためのテキストファイルです。拡張子は .bat です。
1-1. テキストファイルを新規作成する
- デスクトップや任意のフォルダで 右クリック する
- 「新規作成」→「テキスト ドキュメント」を選択する
- ファイル名を run_python.bat として保存する(拡張子の変更を求められたら「はい」を選ぶ)
💡 拡張子が表示されていない場合: エクスプローラーの「表示」タブ →「ファイル名拡張子」にチェックを入れると表示されるようになります。
1-2. BATファイルの内容を記述する
作成したBATファイルを右クリックし、「メモ帳で編集」を選択して開きます。次のコードを記述してください。
@echo off
cd /d "C:\Users\YourUsername\Documents\MyProject"
"C:\Users\YourUsername\AppData\Local\Programs\Python\Python311\python.exe" "main.py"
pause
各行の意味は以下のとおりです。
| コマンド | 意味 | ポイント |
|---|---|---|
@echo off |
コマンド自体の表示を非表示にする | 画面の出力をスッキリさせる定番の1行 |
cd /d "フォルダパス" |
作業ディレクトリをスクリプトがあるフォルダに移動する | ⭐ 最重要。これがないとファイルの読み書きが失敗する |
"python.exeのパス" "スクリプト名" |
Pythonを起動してスクリプトを実行する | パスにスペースが含まれる場合は必ずダブルクォートで囲む |
pause |
実行後に画面を一時停止する | テスト中のみ使用。自動化後は削除してOK |
1-3. 書き換えが必要な箇所
以下の2箇所を自分の環境に合わせて書き換えてください。
- Pythonスクリプトがあるフォルダのパス: 例)
C:\Users\YourUsername\Documents\MyProject - Python実行ファイルのパス: 事前準備でコピーしたパスを使用
1-4. 保存時の注意点(文字コード)
メモ帳で保存する際は、ファイルの 文字コードを「ANSI」(または「Shift-JIS」) に設定してください。UTF-8で保存すると、日本語フォルダ名やパスが文字化けして動作しない場合があります。
保存手順:「ファイル」→「名前を付けて保存」→「文字コード」を「ANSI」に変更 → 保存
1-5. 動作テストをする
保存したBATファイルを ダブルクリック して実行し、Pythonスクリプトが正しく動くことを確認してください。コマンドプロンプトが開き、スクリプトの処理が実行されれば成功です。
⚠️ エラーが出た場合の確認ポイント:
- Pythonのパスが正しいか(半角スペース・大文字小文字に注意)
- スクリプトのフォルダパスが正しいか
- スクリプトのファイル名が正確か(拡張子 .py を含む)
ステップ2:Windowsの「タスクスケジューラ」に登録する
BATファイルが動くことを確認したら、いよいよタスクスケジューラに登録してスケジュール実行を設定します。
2-1. タスクスケジューラを起動する
- Windowsのスタートメニューの検索窓に 「タスクスケジューラ」 と入力する
- 検索結果に表示された「タスクスケジューラ」をクリックして起動する
2-2. 基本タスクの作成を開始する
- タスクスケジューラの右側にある「操作」メニューから 「基本タスクの作成…」 をクリックする
- 「基本タスクの作成ウィザード」が開く
2-3. タスクの名前と説明を設定する
- 「名前」欄に分かりやすいタスク名を入力する(例:
Python定期実行_データ収集) - 「説明」欄に任意のメモを入力する(後から管理しやすくなるため、記入を推奨)
- 「次へ」をクリックする
2-4. トリガー(実行タイミング)を設定する
「このタスクをいつ開始しますか?」という画面で、実行頻度を選択します。
| 選択肢 | 用途の例 |
|---|---|
| 毎日 | 毎日定時にデータを取得・集計したい場合 |
| 毎週 | 週次レポートを自動生成したい場合 |
| 毎月 | 月次のバックアップやCSV出力を行いたい場合 |
| コンピューターの起動時 | PC起動と同時にスクリプトを動かしたい場合 |
| ログオン時 | 自分がWindowsにログインした際に実行したい場合 |
「毎日」を選んだ場合は次の画面で 開始日時・実行時刻・繰り返し間隔 を設定します。例えば、毎日AM 9:00に実行するなら「9:00:00」と入力します。
2-5. 操作の種類を選択する
- 「タスクでどの操作を実行しますか?」という画面で 「プログラムの開始」 を選択する
- 「次へ」をクリックする
2-6. BATファイルを指定する(最重要)
この画面がタスクスケジューラ設定の最も重要なポイントです。
- 「プログラム/スクリプト」欄の 「参照」 ボタンをクリックする
- ステップ1で作成した BATファイルを選択 する
- 「開始 (オプション)」欄に BATファイルが置いてあるフォルダのパス を入力する
⭐ 「開始 (オプション)」への入力は必須です!
ここが空欄のままだと、タスクスケジューラ経由で実行した際にカレントディレクトリがズレてしまい、ファイルの読み書きが失敗したり「スクリプトが見つからない」エラーが発生します。入力する値の例:BATファイルが
C:\Users\YourUsername\Documents\MyProject\run_python.batにある場合 →C:\Users\YourUsername\Documents\MyProjectと入力(ファイル名は含めない)。
2-7. 設定を完了する
- 確認画面で設定内容を確認する
- 問題なければ 「完了」 をクリックする
タスクスケジューラの一覧に、作成したタスクが表示されれば登録完了です!
動作確認をする
登録後はすぐに手動でテスト実行して、正しく動くか確認しましょう。
手動テスト実行の手順
- タスクスケジューラの一覧から、作成したタスクを 右クリック する
- 「実行する」をクリックする
- 「最後の実行結果」の列が 「0x0」 になっていれば正常終了
| 最後の実行結果 | 意味 |
|---|---|
0x0 |
✅ 正常終了 |
0x1 |
❌ スクリプトがエラー終了(Pythonエラーの可能性) |
0x2 |
❌ ファイルが見つからない |
0x41301 |
⏳ タスクが現在実行中(しばらく待つ) |
よくあるトラブルと対処法
「スクリプトが見つからない」エラーが出る
- BATファイル内の
cd /dのパスが正しいか確認する - タスクスケジューラの「開始 (オプション)」が正しく設定されているか確認する
- スクリプトのファイル名(大文字・小文字・拡張子)を確認する
手動実行はできるのにスケジュール実行ができない
- タスクスケジューラの「全般」タブで 「最上位の特権で実行する」 にチェックを入れる
- 「ユーザーがログオンしているかどうかにかかわらず実行する」を選択し、ログイン中でなくても実行できるように設定する
Pythonのライブラリが読み込まれない
- 仮想環境(venv)を使っている場合は、BATファイルで 仮想環境のactivateを先に実行 する必要があります
@echo off
cd /d "C:\Users\YourUsername\Documents\MyProject"
call "C:\Users\YourUsername\Documents\MyProject\venv\Scripts\activate.bat"
python "main.py"
pause
日本語のパスで文字化けする
- BATファイルの文字コードを ANSI(Shift-JIS) で保存し直す
- BATファイルの先頭に
chcp 65001を追加してUTF-8に変更する方法もあるが、環境によって挙動が異なるため注意
まとめ
今回解説した手順をまとめます。
- Pythonのパスを確認する:コマンドプロンプトで
where pythonを実行 - BATファイルを作成する:
@echo off・cd /d・Python実行コマンドを記述し、ANSIで保存 - BATファイルをテストする:ダブルクリックで動作確認
- タスクスケジューラに登録する:「基本タスクの作成」からBATファイルとスケジュールを設定
- 「開始 (オプション)」を入力する:フォルダパスを必ず指定
- 手動テスト実行で動作確認する:実行結果が
0x0なら成功
BATファイルとタスクスケジューラを組み合わせれば、面倒な手動実行から解放され、Pythonスクリプトを完全自動化することができます。一度設定してしまえば、あとはPCが自動でこなしてくれるのが最大のメリットです。
ぜひこの記事を参考に、自分のPythonプロジェクトに定期実行の仕組みを取り入れてみてください!



コメント