タスクスケジューラからWindowsストアのPythonを実行する

pythonで書いたプログラムをタスクスケジューラーで動かそうとしたら、Windowsストアアプリで入れたpythonの実行ファイルが見つからずに少しハマったのでメモ。

 

忙しい人のために先に結論

ストアアプリの場合はcmd /c start "" "アプリ実行ファイル"でコマンドラインから実行できる。
タスクスケジューラーに登録するなら、

プログラム cmd
引数 /c start "" "python" "c:\hoge\fuga.py"

 

 

 

タスクスケジューラーで指定時刻に、「プログラムの開始」で、

 プログラム/スクリプト   python

 引数の追加  作成した.pyファイル

としたら動くかと思ったのだけど、動かしてみると前回の実行結果が「指定されたファイルが見つかりません」になって動作しない。

f:id:asakatana:20220212202906p:plain

NGパターン

テスト実行時に>python hoge.pyで動作していたので、パスは通ってるはず。whereコマンドで 調べてみると

>where python
C:\Users\username\AppData\Local\Microsoft\WindowsApps\python.exe

が帰ってきた。この場所をプログラム/スクリプトの「参照」ボタンを押して上記のパスを入力すると「ファイルにアクセスできません」というエラーになる。

 

f:id:asakatana:20220212204407p:plain

 

エクスプローラーでそのファイルを見てみると 0KB のアプリケーションとなっている。

f:id:asakatana:20220212214352p:plain

 

なぜだろうと思い返してみると、そういえばこの環境のpythonWindowsストアで入れたことを思い出した。

 

ストアアプリをコマンドラインで動かす方法をググってみるとcmd /c startで起動する方法が見つかった。以下のようにすると動く。

 

>cmd /c start "" "python" "c:\hoge\fuga.py"

 

これをもとに、タスクスケジューラーには以下のように登録し、動作させると動かすことができた。

プログラム cmd
引数 /c start "" "python" "c:\hoge\fuga.py"

f:id:asakatana:20220212213141p:plain

OKパターン